web-dev-qa-db-fra.com

Les messages websocket peuvent-ils arriver dans le désordre?

Si nous envoyons deux messages sur le même websocket html5, une milliseconde séparée,

Est-il théoriquement possible que les messages arrivent dans un ordre différent de celui où ils ont été envoyés?

39
Alex Lopatin

Réponse courte: non.

Longue réponse:

WebSocket fonctionne sur TCP. La réponse de @EJP s'applique donc à ce niveau. WebSocket peut être "intercepté" par des intermédiaires (tels que les mandataires WS): ceux-ci sont autorisés à réorganiser les cadres de contrôle WebSocket (c.-à-d. Pings/pongs WS), mais pas les cadres de message quand aucune extension WebSocket n'est en place. S'il existe une extension néogiée en place qui autorise en principe la réorganisation, un intermédiaire ne peut le faire que s'il comprend l'extension et les règles de réorganisation qui s'appliquent.

40
oberstet

Il n'est pas possible pour eux d'arriver dans votre application hors d'usage. Tout peut arriver sur le réseau, mais TCP ne vous présentera que les octets dans l'ordre dans lequel ils ont été envoyés.

14
user207421

Au niveau de la couche réseau, TCP est censé garantir que les messages arrivent dans l’ordre. Au niveau de la couche application, des erreurs peuvent survenir dans le code et rendre vos messages en désordre dans la logique de votre code. Il peut s'agir de la pile réseau utilisée par votre application ou de votre code d'application lui-même.

Si vous me le demandez, mon application Node.js peut-elle garantir l’envoi et la réception de messages dans l’ordre? Je vais devoir dire non. J'ai exécuté des applications Websocket connectées au WiFi sous une latence élevée et un signal faible. Cela provoque un comportement très étrange, comme si les paquets étaient abandonnés et les messages désordonnés.

Cet article est une bonne lecture https://samsaffron.com/archive/2015/12/29/websockets-caution-required

0
manit