Grundlæggende om WebSocket
Kommunikér tovejs i realtid
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: websocketConnection: 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 tekstwss://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
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
- Grundlæggende om WebSocket
- Brug af gorilla/websocket
- Broadcasting af beskeder
- Forbindelseshåndtering