Was ist der Unterschied zwischen WebSocket- und STOMP-Protokollen?


95

Was sind die Hauptunterschiede zwischen WebSocket- und STOMP-Protokollen?

Antworten:


88

Diese Frage ähnelt der Frage nach dem Unterschied zwischen TCP und HTTP. Ich werde immer noch versuchen, Ihre Frage zu beantworten. Es ist natürlich, dass Sie zwischen diesen beiden Begriffen verwechselt werden, wenn Sie anfangen.

Kurze Antwort

STOMP wird über WebSockets abgeleitet. STOMP erwähnt nur einige spezifische Möglichkeiten, wie die Nachrichtenrahmen mithilfe von WebSockets zwischen dem Client und dem Server ausgetauscht werden.


Lange Antwort

WebSockets

Es ist eine Spezifikation, die eine synchrone bidirektionale Kommunikation zwischen einem Client und einem Server ermöglicht. Obwohl es TCP-Sockets ähnelt, handelt es sich um ein Protokoll, das als aktualisierte HTTP-Verbindung fungiert und anstelle eines Streams Frames variabler Länge zwischen den beiden Parteien austauscht.

STAMPFEN

Es definiert ein Protokoll für Clients und Server zur Kommunikation mit Messaging-Semantik. Es werden keine Implementierungsdetails definiert, sondern ein einfach zu implementierendes Drahtprotokoll für Messaging-Integrationen behandelt. Es bietet eine höhere Semantik zusätzlich zum WebSockets-Protokoll und definiert eine Handvoll Rahmentypen, die WebSockets-Rahmen zugeordnet sind. Einige dieser Typen sind ...

  • verbinden
  • abonnieren
  • Abmelden
  • senden (an den Server gesendete Nachrichten)
  • Nachricht (für vom Server gesendete Nachrichten) BEGIN, COMMIT, ROLLBACK (Transaktionsverwaltung)

meinten Sie asynchron?
Anatolii Stepaniuk

24

WebSocket impliziert eine Messaging-Architektur, schreibt jedoch nicht die Verwendung eines bestimmten Messaging-Protokolls vor. Es ist eine sehr dünne Schicht über TCP, die einen Bytestrom in einen Nachrichtenstrom (entweder Text oder Binär) und nicht viel mehr umwandelt. Es liegt an den Anwendungen, die Bedeutung einer Nachricht zu interpretieren.

Im Gegensatz zu HTTP, einem Protokoll auf Anwendungsebene, enthält das WebSocket-Protokoll in einer eingehenden Nachricht einfach nicht genügend Informationen, damit ein Framework oder Container weiß, wie es weitergeleitet oder verarbeitet wird. Daher ist WebSocket wohl zu niedrig für alles andere als eine sehr triviale Anwendung. Es kann getan werden, aber es wird wahrscheinlich dazu führen, dass ein Framework darüber geschaffen wird. Dies ist vergleichbar mit der Art und Weise, wie die meisten Webanwendungen heutzutage mit einem Webframework und nicht nur mit der Servlet-API geschrieben werden.

Aus diesem Grund definiert der WebSocket RFC die Verwendung von Unterprotokollen. Während des Handshakes können Client und Server den Header Sec-WebSocket-Protocol verwenden, um ein Unterprotokoll zu vereinbaren, dh ein höheres Protokoll auf Anwendungsebene. Die Verwendung eines Unterprotokolls ist nicht erforderlich. Selbst wenn es nicht verwendet wird, müssen Anwendungen dennoch ein Nachrichtenformat auswählen, das sowohl vom Client als auch vom Server verstanden werden kann. Dieses Format kann benutzerdefiniert, Framework-spezifisch oder ein Standard-Messaging-Protokoll sein.

STOMP  - ein einfaches Messaging-Protokoll, das ursprünglich für die Verwendung in Skriptsprachen mit von HTTP inspirierten Frames erstellt wurde. STOMP wird weitgehend unterstützt und eignet sich gut für die Verwendung über WebSocket und über das Web.


12

Die WebSocket-API ermöglicht Webanwendungen die bidirektionale Kommunikation, während STOMP ein einfaches textorientiertes Messaging-Protokoll ist.

Das STOMP-Protokoll wird üblicherweise in einem Web-Socket verwendet, wenn eine Web-App die bidirektionale Kommunikation mit einem Webserver unterstützen muss.

Ein gutes Tutorial ist STOMP Over WebSocket von Jeff Mesnill (2012)

STOMP kann auch ohne Websocket verwendet werden, z. B. über eine Telnet-Verbindung oder einen Nachrichtenvermittlungsdienst.

Und Raw WebSockets können ohne STOMP verwendet werden - z. Spring Boot + WebSocket-Beispiel ohne STOMP und SockJs .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.