Go Academy · Lektion

Grundlæggende om WebSocket

Kommunikér tovejs i realtid

Lektion 1 af 413 trin

Grundlæggende om WebSocket er en gratis Go Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Go Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Go Academy-kurset indeholder 4 lektioner i alt.

Tovejskommunikation i realtid

HTTP følger modellen med forespørgsel og svar: klienten spørger, serveren svarer, og forbindelsen slutter (logisk set). Til chat, live-dashboards og spil har du brug for en vedvarende, tovejskommunikationskanal. Det er det, WebSockets giver dig.

Opgraderingshåndtrykket

En WebSocket-forbindelse starter som en normal HTTP-forespørgsel med særlige headere:

  • Upgrade: websocket
  • Connection: Upgrade

Serveren svarer 101 Switching Protocols, og TCP-socketen genbruges til fuld-dupleks-rammer.

Hvorfor ikke bare polling

Før WebSockets brugte apps polling (gentagne forespørgsler) eller long-polling. Begge dele spilder båndbredde og øger ventetiden. WebSockets holder én forbindelse åben, så begge sider kan sende med det samme.

Rammer, ikke forespørgsler

Efter opgraderingen transporteres data som lette rammer i stedet for HTTP-meddelelser. Rammer kan være tekst eller binære, og der findes kontrolrammer til ping/pong og lukning.

Fuld dupleks

I modsætning til HTTP kan begge parter sende når som helst uden at vente på et svar. En server kan skubbe en notifikation ud, så snart noget ændrer sig, og klienten kan sende input samtidig.

ws kontra wss

Ligesom http/https har WebSockets to skemaer:

  • ws:// ukrypteret tekst
  • wss:// over TLS (brug dette i produktion)

Understøttelse i standardbiblioteket

Go's standardbibliotek har ingen WebSocket-implementering i net/http alene. Fællesskabet bruger github.com/gorilla/websocket eller nhooyr.io/websocket. Vi gennemgår gorilla i næste lektion.

import "github.com/gorilla/websocket"

En mental model

Forestil dig en WebSocket som en telefonsamtale:

  • At ringe op = HTTP-opgraderingshåndtrykket
  • Den åbne forbindelse = den vedvarende forbindelse
  • Kommunikation i begge retninger = rammer med fuld duplex
  • At lægge på = lukkerammen

Meddelelsestyper

To typer datarammer er vigtigst:

  • Tekst-rammer indeholder UTF-8 (ofte JSON)
  • Binære rammer indeholder rå bytes (protobuf, billeder)

Kontrolrammer (ping, pong, lukning) styrer selve forbindelsen.

Hvor WebSockets udmærker sig

Velegnede anvendelser:

  • Chat og tilstedeværelse
  • Handel eller sportsresultater i realtid
  • Samarbejdsredigering
  • Spiltilstand i flerspillerspil

Når data kun skal gå én vej fra server til klient, kan Server-Sent Events være enklere.

Kørbar: Idéen om rammer

WebSocket-kode kræver et eksternt bibliotek, så her er en analogi fra standardbiblioteket: en funktion, der klassificerer en meddelelse som tekst eller binær og illustrerer rammetyper.

package main

import (
    "fmt"
    "unicode/utf8"
)

func frameType(data []byte) string {
    if utf8.Valid(data) {
        return "text"
    }
    return "binary"
}

func main() {
    fmt.Println(frameType([]byte("hello")))
    fmt.Println(frameType([]byte{0xff, 0x00, 0x01}))
}

Hurtig kontrol

Kontrollér din forståelse af WebSocket-grundlaget.

Opsummering

Du har lært det grundlæggende om WebSocket:

  • De giver vedvarende kommunikation i begge retninger
  • De begynder med et HTTP-opgraderingshåndtryk (svar 101)
  • Data flyder som tekst- eller binære rammer; kontrolrammer styrer forbindelsen
  • Brug wss:// i produktion; Go er afhængig af biblioteker som gorilla/websocket
Gratis at komme i gang

Lær Go med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
51
Lektioner
203

Ofte stillede spørgsmål

Er lektionen “Grundlæggende om WebSocket” gratis?

Ja — alle 3 lektioner i læringssporet Go Academy, inklusive “Grundlæggende om WebSocket”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Go Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Grundlæggende om WebSocket”?

Kommunikér tovejs i realtid Du øver dig i Go Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Go Academy?

Der kræves ingen tidligere erfaring. Go Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Grundlæggende om WebSocket”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Go Academy-lektion?

Ja. Alle Go Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Grundlæggende om WebSocket
  2. Brug af gorilla/websocket
  3. Broadcasting af beskeder
  4. Forbindelseshåndtering
← Tilbage til Go Academy