0

我正在使用 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浏览器中)时,该浏览器上的数据接收几乎立即停止(但机器仍然接收数据)。

4

1 回答 1

0

Chrome (实际上是 usrsctp 库)中有一个错误,如果 16 位序列计数器的包装发生在较长消息的中间,则会错误处理它。它现在已修复 - 因此值得再次尝试您的代码。请参阅: 铬问题 664283

于 2017-03-25T09:06:58.940 回答