RTC数据通道的不稳定行为

时间:2015-01-13 09:45:44

标签: javascript webrtc rtcdatachannel

我正在使用RTC数据通道在两个对等体(两个Chrome浏览器,一个windows pc和另一个mac)之间每200kb(使用超时)传输数据(约100ms)。

出于某种原因,突然无缘无故,一般在大约5分钟后,其中一个对等体停止接收数据,经过一段时间后,另一个对等体也停止接收数据。

经过大量调试后,我发现两个对等体仍在传输数据,而且从网络流量分析来看,很明显其他机器正在接收数据,但浏览器不会调用channel.onmessage

我的部分代码:

function timepot1(){ // I have cheked, this keeps getting called, no problem here

    try {
         ....
         channel.send(JSON.stringify(jsObject));
    }catch (err) {
        console.log(err);
    }   
    setTimeout(timepot1, 100);
};

是否有一些已知错误导致此问题,或者是因为我同时从同一频道上的两个对等方传输大量数据?


编辑

显然,当我改为单通道时,我正在使用两个数据通道(一个用于每个方向的传输)。它停止工作得更快。

这听起来很愚蠢,但当我清除控制台(在chrome浏览器中)时,该浏览器上的数据接收几乎立即停止(但机器仍然接收数据)。

1 个答案:

答案 0 :(得分:0)

Chrome中存在一个错误(实际上是usrsctp lib),它错误地处理了16位序列计数器的包装,如果它发生在较长消息的中间。它现在已经修复 - 所以再次尝试你的代码是值得的。 看到: Chromium issue 664283

相关问题