问题背景:
在做基于kurento的webRTC项目时,信令服务是通过webSocket来发送/接收消息的。
其中一个模块的需求是,要求在进入页面后自动开始建立webRTC连接,这时问题就出现了:如果我在ws连接建立完成前调用创建peerConnection的方法,会报出错误,非法的状态:
An attempt was made to use an object that is not, or is no longer, usable
其原因时,建立peerConnection中的一步是,创建SDP Offer信息,然后通过ws发送给信令服务器,此时,ws的状态不是connected,进而导致发送失败。
解决方案:
创建连接前,先检查ws的状态,是否为1。如果为1,则进行后面的创建工作,否则,等待1秒后重试。
function viewer() {
if (!webRtcPeer) {
video = document.getElementById('video');
showSpinner(video);
if (ws.readyState != 1) {
setTimeout(viewer, 1000);
return;
}
var options = {
remoteVideo : video,
onicecandidate