Ich benutze geordneten Set zu True, jedoch, wenn viele (1000 oder mehr) Nachrichten in einer kurzen Zeit gesendet werden (< 1 Sekunde) die empfangenen Nachrichten sind nicht alle in der gleichen Reihenfolge erhalten.Warum werden die über WebRTC gesendeten Nachrichten manchmal in einer anderen Reihenfolge empfangen?
rtcPeerConnection.createDataChannel("app", {
ordered: true,
maxPacketLifeTime: 3000
});
Ich könnte ein minimales Beispiel angeben, um dieses seltsame Verhalten bei Bedarf zu reproduzieren.
Ich verwende auch bufferedAmountLowThreshold und das zugehörige Ereignis, um zu verzögern, wenn der Sendepufferbetrag zu groß ist. Ich wählte 2000, aber ich weiß nicht, wie die optimale Zahl ist. Der Grund, warum ich in so kurzer Zeit so viele Nachrichten habe, liegt darin, dass ich die maximale Menge an Daten, die auf einmal gesendet werden, nicht überlaufen lassen möchte. Also teile ich die Daten in 800 Bytes Packs und sende diese. Wieder weiß ich nicht, was die maximale Größe 1 Nachricht sein kann.
const SEND_BUFFERED_AMOUNT_LOW_THRESHOLD = 2000; //Bytes
rtcSendDataChannel.bufferedAmountLowThreshold = SEND_BUFFERED_AMOUNT_LOW_THRESHOLD;
const MAX_MESSAGE_SIZE = 800;
Alles funktioniert gut für kleine Daten, die nicht in zu viele Nachrichten aufgeteilt werden. Der Fehler tritt nur bei großen Dateien zufällig auf.
Welcher Browser ist das? – jib
es passiert zwischen firefox und chrome, beide wege –
Ich denke nicht, WebRTC garantiert Nachricht Reihenfolge. Haben Sie Unterlagen gesehen, die das sagen? – ssube