it-swarm.com.de

Können Websocket-Nachrichten nicht in der richtigen Reihenfolge ankommen?

Wenn wir zwei Nachrichten über dasselbe HTML5-Websocket in einem Abstand von einer Millisekunde senden,

Ist es theoretisch möglich, dass die Nachrichten in einer anderen Reihenfolge eintreffen als sie gesendet wurden?

39
Alex Lopatin

Kurze Antwort: Nein.

Lange Antwort:

WebSocket läuft über TCP, daher gilt auf dieser Ebene die Antwort von @EJP. WebSocket kann von Intermediären (wie WS-Proxys) "abgefangen" werden: Diese dürfen zwar WebSocket-Steuerframes (d. H. WS-Pings/Pongs) neu anordnen, aber keine Nachrichtenframes, wenn keine WebSocket-Erweiterung vorhanden ist. Wenn eine neue Erweiterung vorhanden ist, die im Prinzip eine Neuordnung ermöglicht, kann ein Vermittler dies nur tun, wenn er die Erweiterung und die geltenden Neuordnungsregeln versteht.

40
oberstet

Es ist nicht möglich, dass sie in Ihrer Bewerbung außer Betrieb ankommen. Alles kann im Netzwerk passieren, aber TCP zeigt Ihnen nur die Bytes in der Reihenfolge an, in der sie gesendet wurden.

14
user207421

Auf der Netzwerkebene wird angenommen, dass TCP garantiert, dass Nachrichten in der richtigen Reihenfolge ankommen. Auf der Anwendungsebene können Fehler im Code auftreten und dazu führen, dass Ihre Nachrichten in der Logik Ihres Codes nicht in Ordnung sind. Dies kann der Netzwerkstapel sein, den Ihre Anwendung verwendet, oder der Anwendungscode selbst.

Wenn Sie mich gefragt haben, kann meine Node.js-Anwendung das ordnungsgemäße Senden und Empfangen von Nachrichten garantieren? Ich muss nein sagen. Ich habe mit WiFi verbundene Websocket-Anwendungen mit hoher Latenz und niedrigem Signal ausgeführt. Es verursacht ein sehr seltsames Verhalten, als ob Pakete verworfen werden und Nachrichten nicht in der richtigen Reihenfolge vorliegen.

Dieser Artikel ist gut gelesen https://samsaffron.com/archive/2015/12/29/websockets-caution-required

0
manit