Wat is het verschil tussen WebSocket- en STOMP-protocollen?

Wat zijn de belangrijkste verschillen tussen WebSocket- en STOMP-protocollen?


Antwoord 1, autoriteit 100%

Deze vraag is vergelijkbaar met het verschil tussen TCP en HTTP. Ik zal nog steeds proberen uw vraag te beantwoorden, het is normaal dat u in de war raakt tussen deze twee termen als u begint.

Kort antwoord

STOMP is afgeleid van WebSockets. STOMP noemt slechts een paar specifieke manieren waarop de berichtframes worden uitgewisseld tussen de client en de server met behulp van WebSockets.


Lang antwoord

WebSockets

Het is een specificatie om asynchrone bidirectionele communicatie tussen een client en een server mogelijk te maken. Hoewel het vergelijkbaar is met TCP-sockets, is het een protocol dat werkt als een verbeterde HTTP-verbinding, waarbij frames met variabele lengte tussen de twee partijen worden uitgewisseld in plaats van een stream.

STOMP

Het definieert een protocol voor clients en servers om te communiceren met messaging-semantiek. Het definieert geen implementatiedetails, maar richt zich eerder op een eenvoudig te implementeren draadprotocol voor berichtintegraties. Het biedt een hogere semantiek bovenop het WebSockets-protocol en definieert een handvol frametypes die worden toegewezen aan WebSockets-frames. Sommige van deze typen zijn…

  • verbinden
  • abonneren
  • uitschrijven
  • verzenden (berichten verzonden naar de server)
  • bericht (voor berichten verzonden vanaf de server) BEGIN, COMMIT, ROLLBACK
    (transactiebeheer)

Antwoord 2, autoriteit 29%

WebSocketimpliceert een berichtenarchitectuur, maar verplicht niet tot het gebruik van een specifiek berichtenprotocol. Het is een zeer dunne laag over TCP die een stroom bytes omzet in een stroom berichten (tekst of binair) en niet veel meer. Het is aan applicaties om de betekenis van een bericht te interpreteren.

In tegenstelling tot HTTP, een protocol op applicatieniveau, is er in het WebSocket-protocol gewoon niet genoeg informatie in een binnenkomend bericht voor een framework of container om te weten hoe het moet worden gerouteerd of verwerkt. Daarom is WebSocket aantoonbaar te laag voor alles behalve een zeer triviale toepassing. Het kan worden gedaan, maar het zal waarschijnlijk leiden tot het creëren van een kader bovenop. Dit is vergelijkbaar met hoe de meeste webapplicaties tegenwoordig worden geschreven met behulp van een webframework in plaats van alleen de Servlet API.

Om deze reden definieert de WebSocket RFC het gebruik van subprotocollen. Tijdens de handshake kunnen de client en de server de header Sec-WebSocket-Protocol gebruiken om een ​​subprotocol af te spreken, d.w.z. een hoger protocol op toepassingsniveau dat moet worden gebruikt. Het gebruik van een subprotocol is niet vereist, maar zelfs als het niet wordt gebruikt, moeten applicaties nog steeds een berichtformaat kiezen dat zowel de client als de server kunnen begrijpen. Dat formaat kan op maat, framework-specifiek of een standaard berichtenprotocol zijn.

STOMP — een eenvoudig berichtenprotocol dat oorspronkelijk is gemaakt voor gebruik in scripttalen met frames die zijn geïnspireerd op HTTP. STOMP wordt breed ondersteund en is zeer geschikt voor gebruik via WebSocket en via het web.


Antwoord 3, autoriteit 13%

Met de WebSocket API kunnen webapplicaties bidirectionele communicatie afhandelen, terwijl STOMP een eenvoudig tekstgeoriënteerd berichtenprotocol is.

Het STOMP-protocol wordt vaak gebruikt in een websocket wanneer een webapp bidirectionele communicatie met een webserver moet ondersteunen.

Een goede tutorial is STOMP Over WebSocketdoor Jeff Mesnill (2012)

STOMP kan ook zonder websocket worden gebruikt, b.v. via een Telnet-verbinding of een dienst voor het doorbreken van berichten.

En Raw WebSockets kunnen worden gebruikt zonder STOMP – bijv. Spring Boot + WebSocket voorbeeld zonder STOMP en SockJs.


Antwoord 4, autoriteit 4%

Opmerking:Anderen hebben goed uitgelegd wat zowel WebSocketals STOMPzijn, dus ik zal proberen de ontbrekende bits toe te voegen.

Het WebSocket-protocol definieert twee soorten berichten (tekst en binair), maar hun inhoud is niet gedefinieerd.

Het

STOMP-protocol definieert een mechanisme voor client en server om te onderhandelen over een subprotocol (dat wil zeggen een berichtenprotocol op een hoger niveau) om bovenop WebSockette gebruiken om definieer de volgende dingen:

  • wat voor soort berichten elk kan verzenden,
  • wat het formaat is,
  • de inhoud van elk bericht, enzovoort.

Het gebruik van een subprotocol is optioneel, maar hoe dan ook, de client en de server moeten overeenstemming bereiken over een protocol dat de berichtinhoud definieert.

Referentie

Other episodes