私は順序付きセットを true に設定していますが、短時間 (1 秒未満) に多数 (1000 以上) のメッセージが送信されると、受信したメッセージがすべて同じ順序で受信されるわけではありません。
rtcPeerConnection.createDataChannel("app", {
ordered: true,
maxPacketLifeTime: 3000
});
必要に応じて、この奇妙な動作を再現するための最小限の例を提供できます。
また、bufferedAmountLowThreshold と関連するイベントを使用して、送信バッファ量が大きすぎる場合に遅延させます。2000 を選択しましたが、最適な数がわかりません。短期間に非常に多くのメッセージを送信する理由は、一度に送信されるデータの最大量をオーバーフローさせたくないからです。そのため、データを 800 バイトのパックに分割して送信します。繰り返しますが、1 メッセージの最大サイズがわかりません。
const SEND_BUFFERED_AMOUNT_LOW_THRESHOLD = 2000; //Bytes
rtcSendDataChannel.bufferedAmountLowThreshold = SEND_BUFFERED_AMOUNT_LOW_THRESHOLD;
const MAX_MESSAGE_SIZE = 800;
あまり多くのメッセージに分割されていない小さなデータの場合は、すべて正常に機能します。このエラーは、大きなファイルに対してのみランダムに発生します。