web-dev-qa-db-fra.com

Quelle est la différence entre les protocoles WebSocket et STOMP?

Quelles sont les principales différences entre les protocoles WebSocket et STOMP?

50
LancerSung

Cette question revient à demander la différence entre TCP et HTTP. Je vais tout de même essayer de répondre à votre question, il est naturel de confondre ces deux termes si vous commencez.

Réponse courte

STOMP est dérivé de WebSockets. STOMP mentionne simplement quelques façons spécifiques sur la façon dont les cadres de messages sont échangés entre le client et le serveur à l'aide de WebSockets.


Réponse longue

WebSockets

Il s'agit d'une spécification permettant la communication bidirectionnelle synchrone entre un client et un serveur. Bien que similaire aux sockets TCP), il s'agit d'un protocole fonctionnant comme une connexion HTTP mise à niveau, échangeant des trames de longueur variable entre les deux parties, au lieu d'un flux.

[~ # ~] piétiner [~ # ~]

Il définit un protocole permettant aux clients et aux serveurs de communiquer avec la sémantique de messagerie. Il ne définit pas les détails de la mise en œuvre, mais plutôt un protocole filaire facile à mettre en œuvre pour les intégrations de messagerie. Il fournit une sémantique plus élevée en plus du protocole WebSockets et définit quelques types de trames mappés sur des trames WebSockets. Certains de ces types sont ...

  • relier
  • souscrire
  • se désabonner
  • envoyer (messages envoyés au serveur)
  • message (pour les messages envoyés depuis le serveur) BEGIN, COMMIT, ROLLBACK (gestion des transactions)
57
Nitin Kamate

WebSocket implique une architecture de messagerie, mais n'exige l'utilisation d'aucun protocole de messagerie spécifique. C’est une couche très mince sur TCP qui transforme un flux d’octets en un flux de messages (texte ou binaire) et pas beaucoup plus. C'est aux applications d'interpréter le sens d'un message.

Contrairement à HTTP, qui est un protocole au niveau de l'application, dans le protocole WebSocket, un message entrant ne contient tout simplement pas assez d'informations pour qu'un framework ou un conteneur sache comment l'acheminer ou le traiter. Par conséquent, WebSocket est sans doute un niveau trop bas pour autre chose qu'une application très triviale. Cela peut être fait, mais cela mènera probablement à la création d’un cadre supérieur. Ceci est comparable à la façon dont la plupart des applications Web sont écrites à l’aide d’un framework Web plutôt que de l’API Servlet.

Pour cette raison, le RFC WebSocket définit l'utilisation de sous-protocoles. Au cours de la négociation, le client et le serveur peuvent utiliser l’en-tête Sec-WebSocket-Protocol pour convenir d’un sous-protocole, c’est-à-dire un protocole de niveau application supérieur à utiliser. L'utilisation d'un sous-protocole n'est pas obligatoire, mais même si elles ne sont pas utilisées, les applications devront toujours choisir un format de message que le client et le serveur peuvent comprendre. Ce format peut être personnalisé, spécifique à une structure ou un protocole de messagerie standard.

STOMP - un protocole de messagerie simple, créé à l'origine pour être utilisé dans les langages de script avec des cadres inspirés par HTTP. STOMP est largement pris en charge et convient parfaitement pour une utilisation sur WebSocket et sur le Web.

13
AnnaKlein

L'API WebSocket permet aux applications Web de gérer les communications bidirectionnelles, alors que STOMP est un protocole de messagerie simple orienté texte.

Le protocole STOMP est couramment utilisé dans un socket Web lorsqu'une application Web doit prendre en charge la communication bidirectionnelle avec un serveur Web.

Un bon tutoriel est STOMP Over WebSocket par Jeff Mesnill (2012)

STOMP peut également être utilisé sans Websocket, par exemple. via une connexion Telnet ou un service de messagerie instantanée.

Et Raw WebSockets peut être utilisé sans STOMP - Par exemple. exemple Spring Boot + WebSocket sans STOMP et SockJs .

8
intotecho