RTCDataChannel.send Firefox问题

时间:2016-05-19 08:44:02

标签: javascript google-chrome firefox webrtc

我正在使用WebRTC技术进行一些测试,但是Chrome和Firefox之间的RTCDataChannel存在一些问题。连接工作正常,我可以在两个浏览器之间发送数据,但问题出现在两个断开连接之一。

当Chrome发送数据并且Firefox接收数据并且Firefox断开连接时,Chrome端的频道将其readyState设置为关闭,我可以处理此消息。

当Firefox发送数据并且Chrome接收数据并且Chrome断开连接时,Firefox端的频道 NOT CHANGES ITS readyState ,所以我无法处理这个问题,显然Firefox会继续向封闭频道发送数据?

我的代码很简单:

建立联系:

[...]
if(offerer){
        channel = connection.createDataChannel("dataChannel", null);
        setChannelEvents(channel);
        connection.createOffer(myFunc, showError);
}else{
        connection.ondatachannel = function(event){
           channel = event.channel;
           setChannelEvents(channel);
        }
    }
[...]

建立连接后可以发送消息:

[...]
try{
  channel.send(message);
    }catch(e){
        //handle error here
        [...]
    }
[...]

正如我所说,当在Chrome channel.send(消息);返回错误(因为readyState被设置为关闭且无法发送消息)执行'handle error here'中的代码,但在Firefox中永远不会执行。

是的,有人能帮帮我吗?这有点令人沮丧。 谢谢!

2 个答案:

答案 0 :(得分:0)

试试我的代码:

switch (channel.readyState) {
case 'open':
    channel.send(message);
    break;
case 'closed':
    console.log('channel.readyState = ' + channel.readyState);
    //handle error here
    break;
default:
    console.error('channel.readyState = ' + channel.readyState);

}

我已成功通过Chrome和Firefox测试

答案 1 :(得分:0)

在接收方调用RTCDataChannel.close()方法。