WebSocket-handshaken förklarad
Analysera den HTTP-baserade handshake-process som uppgraderar en vanlig HTTP-anslutning till en WebSocket-anslutning.
WebSocket-handshaken förklarad är en gratis lektion i Programmering av WebSockets och system i realtid på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Programmering av WebSockets och system i realtid, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Programmering av WebSockets och system i realtid innehåller totalt 4 lektioner.
Handskakningen: uppgradering av anslutningen
Föreställ dig att du ringer en vän, men att ni först kommer överens om ett hemligt språk i stället för att bara börja prata. WebSocket-handskakningen fungerar på ett liknande sätt!
Det är det viktiga första steget där webbläsaren (klienten) och en server kommer överens om att byta från en vanlig HTTP-anslutning till en WebSocket-anslutning.
Bortom HTTP:s begränsningar
Traditionell HTTP är utformat för korta, enstaka begäranden och svar. Tänk på när en webbsida läses in – du frågar, servern skickar och anslutningen stängs.
- Enkelriktat: Klienten skickar en begäran och servern svarar.
- Kortvarigt: Anslutningen stängs efter varje interaktion.
- Overhead: Varje ny begäran kräver att en ny anslutning upprättas.
WebSockets behöver en bestående kommunikationsväg i båda riktningarna för realtidsdata.
Klienten initierar uppgraderingen
Handskakningen börjar med att klienten (din webbläsare) skickar en vanlig HTTP GET-begäran till servern. Men den är inte helt ”vanlig”!
Begäran innehåller särskilda HTTP-headers som signalerar klientens avsikt att ”uppgradera” till WebSocket-protokollet. Det är som att lägga till en särskild anteckning i samtalet där du ber om att få byta till det hemliga språket.
Signalerar avsikten att byta
Två viktiga headers talar tydligt om för servern att klienten vill ha en WebSocket-anslutning:
Upgrade: websocket: Den här headern anger vilket protokoll klienten vill byta till.Connection: Upgrade: Den här allmänna HTTP-headern anger att klienten vill uppgradera eller byta protokoll.
Tillsammans utgör de kärnan i uppgraderingsbegäran.
Klientens hemliga nyckel
En annan viktig header från klienten är Sec-WebSocket-Key.
- Det är ett slumpmässigt värde på 16 byte, kodat i Base64.
- Den fungerar som en unik och oförutsägbar ”nonce” (ett värde som används en gång) för varje handskakning.
- Servern använder nyckeln för att bevisa att den förstår WebSocket-protokollet och för att förhindra vissa typer av problem med cachelagring eller proxyservrar.
Kontroll av protokollversion
Headern Sec-WebSocket-Version är enkel men viktig.
Den talar om för servern vilken version av WebSocket-protokollet klienten använder. Den aktuella standardversionen är 13.
Det säkerställer att både klient och server använder samma ”dialekt” av WebSocket-språket, vilket garanterar kompatibilitet.
Servern svarar: 101 Switching Protocols
Om servern stöder WebSockets och godkänner uppgraderingen skickar den ett särskilt HTTP-svar tillbaka till klienten.
Den viktigaste delen av svaret är HTTP-statuskoden 101: Switching Protocols. Koden betyder uttryckligen att servern byter protokoll enligt klientens begäran.
Serverns bekräftelsenyckel
Serverns svar innehåller också viktiga headers:
Upgrade: websocketochConnection: Upgrade: Genom att spegla klientens headers bekräftar dessa att servern godkänner uppgraderingen.Sec-WebSocket-Accept: Detta är en hash som servern skapar med hjälp av klientensSec-WebSocket-Keyoch en specifik ”magisk sträng”. Den bevisar att servern förstod nyckeln och kan använda WebSockets.
Kontroll av handskakningsnyckeln
Du har nu lärt dig om de viktiga headers som ingår i WebSocket-handskakningen.
Vilken av följande headers skickas av klienten för att initiera WebSocket-uppgraderingen och innehåller ett slumpmässigt, unikt värde?
Anslutningen är uppgraderad och klar!
När klienten tar emot och validerar serverns 101-svar med rätt Sec-WebSocket-Accept-header är HTTP-handskakningen klar!
Anslutningen har nu uppgraderats till en WebSocket med full duplex. Både klient och server kan skicka och ta emot data samtidigt över den bestående anslutningen, vilket möjliggör äkta realtidskommunikation.
Lär dig Programmering av WebSockets och system i realtid med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 47
Vanliga frågor
Är lektionen ”WebSocket-handshaken förklarad” gratis?
Ja – hela texten till ”WebSocket-handshaken förklarad” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Programmering av WebSockets och system i realtid, kan Ni uppgradera till CoddyKit PRO. Kursen i Programmering av WebSockets och system i realtid innehåller totalt 4 lektioner.
Vad lär jag mig i ”WebSocket-handshaken förklarad”?
Analysera den HTTP-baserade handshake-process som uppgraderar en vanlig HTTP-anslutning till en WebSocket-anslutning. Ni övar på Programmering av WebSockets och system i realtid med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Programmering av WebSockets och system i realtid?
Du behöver inga förkunskaper. Utbildningen i Programmering av WebSockets och system i realtid på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”WebSocket-handshaken förklarad”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Programmering av WebSockets och system i realtid-lektionen?
Ja. Varje Programmering av WebSockets och system i realtid-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- WebSocket-handshaken förklarad
- WebSocket-dataramning och meddelanden
- Anslutningens livscykel och tillstånd
- Subprotokoll, tillägg och komprimering