我正在使用 RTC 数据通道在两个对等方(两个 chrome 浏览器,一个 windows pc n 另一个 mac)之间200kb
每次(使用超时)传输数据(大约)。100ms
由于某种原因,突然无缘无故,一般在大约 5 分钟后,其中一个 peer 停止接收数据,再过一段时间,另一个 peer 也停止接收数据。
经过大量调试,我发现两个peer都还在传输数据,从网络流量分析,很明显对方机器正在接收数据,但是浏览器没有调用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
浏览器中)时,该浏览器上的数据接收几乎立即停止(但机器仍然接收数据)。