我正在使用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
浏览器中)时,该浏览器上的数据接收几乎立即停止(但机器仍然接收数据)。
答案 0 :(得分:0)
Chrome中存在一个错误(实际上是usrsctp lib),它错误地处理了16位序列计数器的包装,如果它发生在较长消息的中间。它现在已经修复 - 所以再次尝试你的代码是值得的。 看到: Chromium issue 664283