0

RTC データチャネルを使用して、2 つのピア (両方のクロム ブラウザ、1 つの Windows PC と他の Mac) の間で (タイムアウトを使用して) データを (約200kb) ごとに転送しています。100ms

なんらかの理由で突然、一般的に約 5 分後にピアの 1 つがデータの受信を停止し、しばらくするともう 1 つのピアもデータの受信を停止します。

多くのデバッグの後、両方のピアがまだデータを送信していることがわかりました。ネットワーク トラフィック分析から、他のマシンがデータを受信して​​いることは明らかでしたが、ブラウザは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);
};

これを引き起こしている既知のバグがありますか、それとも同じチャネルの両方のピアから同時に大量のデータを転送しているためですか?


編集

どうやら、シングルチャネルに変更したとき、2 つのデータチャネル (各方向の送信用に 1 つ) を使用していたようです。それははるかに早く機能しなくなりました。

これはばかげているように聞こえますが、(chromeブラウザーで) コンソールをクリアすると、そのブラウザーでのデータの受信はほとんどすぐに停止します (ただし、マシンはまだデータを受信して​​います)。

4

1 に答える 1

0

Chrome (実際には usrsctp lib) にバグがあり、16 ビット シーケンス カウンターが長いメッセージの途中で発生した場合、そのラッピングを誤って処理していました。現在は修正されているため、コードをもう一度試す価値があります。参照: Chromium の問題 664283

于 2017-03-25T09:06:58.940 に答える