Quelle est la différence entre les protocoles WebSocket et STOMP?
3 réponses
cette question est similaire à celle de la différence entre TCP et HTTP. Je vais encore essayer de répondre à votre question, il est naturel de confondre ces deux termes si vous commencez.
Courte Réponse
STOMP est dérivé sur le dessus des WebSockets. STOMP ne mentionne que quelques façons spécifiques sur la façon dont les cadres de messages sont échangés entre le client et le serveur en utilisant Les WebSockets.
Longue Réponse
WebSockets
il s'agit d'une spécification permettant une communication bidirectionnelle synchrone entre un client et un serveur. Bien que similaire aux sockets TCP, c'est un protocole qui fonctionne comme une connexion HTTP améliorée, échangeant des trames de longueur variable entre les deux parties, au lieu d'un flux.
STOMP
Il définit un protocole de clients et serveurs pour communiquer avec la sémantique de messagerie. Il ne définit aucun détail de mise en œuvre, mais traite plutôt d'un protocole fil facile à mettre en œuvre pour les intégrations de messagerie. Il fournit une sémantique plus élevée au-dessus du protocole WebSockets et définit une poignée de types de cadres qui sont mappés sur les cadres WebSockets. Certains de ces types le sont...
- se connecter
- vous abonner
- se désabonner
- envoyer (messages envoyés au serveur)
- message (for messages send from the server) BEGIN, COMMIT, roll back (gestion des transactions)
L'API WebSocket permet aux applications web de gérer les communications bidirectionnelles tandis que STOMP est un simple protocole de messagerie textuelle.
le protocole STOMP est couramment utilisé à l'intérieur d'une 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 une connexion websocket, par exemple via une connexion Telnet ou un message de courtage en service.
et les WebSockets bruts peuvent être utilisés sans STOMP-Eg. Printemps de Démarrage + WebSocket exemple sans STOMP et SockJs.
WebSocket implique une architecture de messagerie, mais n'impose pas l'utilisation d'un protocole de messagerie. C'est une couche très mince sur TCP qui transforme un flux d'octets dans un flux de messages (texte ou binaire) et pas beaucoup plus. C'est à des applications d'interpréter le sens d'un message.
contrairement à HTTP, qui est un protocole au niveau de l'application, dans le protocole WebSocket il n'y a tout simplement pas assez d'informations dans un message entrant pour un framework ou conteneur à savoir comment l'acheminer ou de processus. Par conséquent, WebSocket est sans doute trop bas niveau pour tout sauf une application très triviale. Cela peut être fait, mais cela mènera probablement à la création d'un cadre au sommet. Ceci est comparable à la façon dont la plupart des applications web sont écrites aujourd'hui en utilisant un framework web plutôt que L'API Servlet seule.
pour cette raison le WebSocket RFC définit l'utilisation des sous-protocoles. Pendant la poignée de main, le client et le serveur peuvent utiliser l'en-tête Sec-WebSocket-protocole pour convenir d'un sous-protocole, c'est-à-dire d'un protocole supérieur au niveau de l'application à utiliser. L'utilisation d'un sous-protocole n'est pas nécessaire, mais même s'il n'est pas utilisé, les applications devront tout de même choisir un format de message que le client et le serveur peuvent comprendre. Ce format peut être personnalisé, spécifique au cadre, ou un protocole de messagerie standard.
STOMP-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 soutenue et bien adapté pour une utilisation sur WebSocket et sur le web.