WebSockets og sanntidssystemer med Spring · leksjon

Introduksjon til STOMP-protokollen

Forstå fordelene ved STOMP sammenlignet med rå WebSockets for strukturert meldingsruting og abonnementer.

Leksjon 1 av 412 trinn

Introduksjon til STOMP-protokollen er en gratis leksjon i WebSockets og sanntidssystemer med Spring på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i WebSockets og sanntidssystemer med Spring, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i WebSockets og sanntidssystemer med Spring inneholder totalt 4 leksjoner.

Møt STOMP: Strukturert meldingsutveksling

Velkommen til STOMP! Når De bygger sanntidsapplikasjoner med WebSockets, trenger De ofte mer enn bare overføring av rådata. De trenger struktur, ruting og en måte å abonnere på bestemte meldinger.

STOMP (Simple Text Oriented Messaging Protocol) tilbyr denne strukturen. Tenk på den som en protokoll på et høyere nivå som ligger oppå WebSockets.

Rå WebSockets: Begrensninger

Med rå WebSockets sender klienter og servere vilkårlige byte eller strenger. Hvis De vil sende en «chatmelding» eller en «bruker ble med»-hendelse, må De definere Deres egne regler:

  • Hvordan vet jeg hva slags melding det er?
  • Hvem skal motta denne meldingen?
  • Hva om jeg vil sende data i et bestemt format, for eksempel JSON?

Uten en protokoll må De implementere alt dette manuelt.

STOMP: Et felles språk

STOMP løser disse problemene ved å definere en standardisert måte å sende og motta meldinger på. Det er som å bli enige om et felles språk for sanntidskommunikasjonen.

  • Den er tekstbasert, noe som gjør den enkel å feilsøke.
  • Den bruker et enkelt rammeformat for all kommunikasjon.
  • Den støtter vanlige meldingsmønstre som publisering og abonnement.

Forstå STOMP-rammer

All kommunikasjon i STOMP skjer via «rammer». En STOMP-ramme består av tre hoveddeler:

  • COMMAND: Hvilken handling som utføres (for eksempel SEND, SUBSCRIBE, CONNECT).
  • HEADERS: Nøkkel-verdi-par som gir tilleggsinformasjon (for eksempel destinasjon, innholdstype).
  • BODY: Selve meldingsinnholdet.

Disse delene skilles fra hverandre med linjeskift.

Første ramme: CONNECT

Når en klient vil opprette en STOMP-tilkobling over en WebSocket, sender den en CONNECT-ramme. Dette forteller serveren at klienten vil bruke STOMP. Legg merke til den tomme linjen før nullbyten (^@) som avslutter rammen.

Slik ser en enkel CONNECT-ramme ut:

CONNECT
accept-version:1.2
host:localhost

Serverens svar: CONNECTED

Hvis serveren godtar tilkoblingen, svarer den med en CONNECTED-ramme. Dette bekrefter at STOMP-økten er klar. Den inneholder også headere som serverens versjon og økt-ID. Husk at rammer avsluttes med en nullbyte (^@).

CONNECTED
version:1.2
session:session-1234
server:Spring

Sende meldinger: SEND-rammen

Klienter bruker kommandoen SEND til å sende en melding. Denne rammen krever en destination-header som forteller STOMP-megleren hvor meldingen skal rutes. Meldingskroppen inneholder de faktiske dataene, ofte i JSON-format. Ikke glem nullbyten (^@) som avslutter rammen!

SEND
destination:/app/chat
content-type:application/json

{"user":"Alice","message":"Hello, everyone!"}

Motta meldinger: SUBSCRIBE

Klienter mottar meldinger ved å bruke kommandoen SUBSCRIBE. De angir en destination de vil lytte til, og en id for abonnementet. Serveren sender deretter MESSAGE-rammer til denne klienten når nye data blir tilgjengelige på destinasjonen. Rammer avsluttes alltid med en nullbyte (^@).

SUBSCRIBE
id:sub-0
destination:/topic/public

STOMP-destinasjoner: Ruting

STOMP bruker destinasjoner til å rute meldinger. De fungerer som adresser. De vanligste typene er:

  • Emner (/topic/...): For kringkastingsmeldinger, der alle abonnenter mottar en kopi. Dette passer godt for chatterom.
  • Køer (/queue/...): For punkt-til-punkt-meldinger, som vanligvis håndteres av én konsument. Dette er nyttig for private meldinger eller oppgavekøer.

Denne innebygde routingen er en stor fordel sammenlignet med rå WebSockets.

Hvorfor bruke STOMP?

STOMP gir betydelige fordeler for sanntidsapplikasjoner:

  • Strukturert meldingsutveksling: Standardisert rammeformat.
  • Meldingsruting: Innebygd støtte for emner og køer.
  • Abonnementsmodell: Det er enkelt for klienter å lytte etter bestemte hendelser.
  • Enklere klientside: Det finnes mange klientbiblioteker som håndterer STOMP-rammer og forenkler utviklingen.

Det gir et robust lag for komplekse meldingsmønstre.

Test forståelsen

Hvilken av de følgende er en hovedfordel ved å bruke STOMP fremfor rå WebSockets?

Leksjonsoppsummering: Introduksjon til STOMP

I denne leksjonen har De lært om STOMP-protokollen og hvorfor den er viktig for strukturert sanntidskommunikasjon over WebSockets.

  • Rå WebSockets har ingen innebygd struktur eller ruting for meldinger.
  • STOMP tilbyr et enkelt, tekstbasert rammeformat (COMMAND, HEADERS, BODY).
  • Viktige STOMP-kommandoer omfatter CONNECT, CONNECTED, SEND og SUBSCRIBE.
  • Den muliggjør kraftige funksjoner som emnebasert kringkasting og købasert punkt-til-punkt-meldingsutveksling.

Deretter skal vi se hvordan STOMP integreres med Spring Boot!

Gratis å komme i gang

Lær deg WebSockets og sanntidssystemer med Spring med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Introduksjon til STOMP-protokollen» gratis?

Ja – hele teksten i «Introduksjon til STOMP-protokollen» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av WebSockets og sanntidssystemer med Spring-kurset, kan du oppgradere til CoddyKit PRO. Kurset i WebSockets og sanntidssystemer med Spring inneholder totalt 4 leksjoner.

Hva lærer jeg i «Introduksjon til STOMP-protokollen»?

Forstå fordelene ved STOMP sammenlignet med rå WebSockets for strukturert meldingsruting og abonnementer. Du øver på WebSockets og sanntidssystemer med Spring med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med WebSockets og sanntidssystemer med Spring?

Ingen tidligere erfaring er nødvendig. WebSockets og sanntidssystemer med Spring på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Introduksjon til STOMP-protokollen»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne WebSockets og sanntidssystemer med Spring-leksjonen?

Ja. Alle WebSockets og sanntidssystemer med Spring-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Introduksjon til STOMP-protokollen
  2. Konfigurering av STOMP med Spring
  3. Sende og motta STOMP-meldinger
  4. Sikring av STOMP-endepunkter med Spring Security
← Tilbake til WebSockets og sanntidssystemer med Spring