Hantera WebSocket-livscykelhändelser i Spring
Lär er att hantera WebSocket-anslutningens livscykel i Spring genom att hantera händelser för anslutning, meddelanden, fel och frånkoppling med WebSocketHandler.
Hantera WebSocket-livscykelhändelser i Spring är en gratis lektion i WebSockets och realtidssystem med Spring på CoddyKit. Detta är lektion 4 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 WebSockets och realtidssystem med Spring, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i WebSockets och realtidssystem med Spring innehåller totalt 4 lektioner.
Anslutningens livscykel
En WebSocket-anslutning går igenom tydliga steg: den öppnas, utbyter meddelanden, kan drabbas av fel och stängs slutligen. Spring låter dig koppla in dig i varje steg för att hantera tillstånd och resurser på ett strukturerat sätt.
I den här lektionen går vi igenom hur dessa livscykelhändelser hanteras.
Gränssnittet WebSocketHandler
Springs lågnivå-API kretsar kring gränssnittet WebSocketHandler. Om du utökar TextWebSocketHandler får du åsidosättningspunkter för varje livscykelhändelse utan att behöva implementera alla metoder.
Anslutningen har upprättats
afterConnectionEstablished körs när en klient ansluter utan problem. Använd den för att registrera sessionen och initiera tillstånd som hör till anslutningen.
@Override
public void afterConnectionEstablished(WebSocketSession session) {
sessions.put(session.getId(), session);
System.out.println('Connected: ' + session.getId());
}Spåra sessioner
Håll aktiva sessioner i en trådsäker samling så att du kan skicka ut meddelanden och städa upp. En ConcurrentHashMap med sessions-ID som nyckel är ett vanligt val.
private final Map<String, WebSocketSession> sessions =
new ConcurrentHashMap<>();Hantera meddelanden
handleTextMessage körs för varje inkommande meddelande. Här tolkar, validerar och bearbetar du nyttolasten och kan sedan svara eller skicka ut meddelandet till flera mottagare.
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
String payload = message.getPayload();
session.sendMessage(new TextMessage('echo: ' + payload));
}Hantera transportfel
handleTransportError anropas när ett lågnivåfel uppstår i anslutningen. Logga problemet och stäng sessionen på ett korrekt sätt om felet inte kan återställas.
@Override
public void handleTransportError(WebSocketSession session, Throwable ex) throws Exception {
System.out.println('Transport error: ' + ex.getMessage());
if (session.isOpen()) {
session.close(CloseStatus.SERVER_ERROR);
}
}Anslutningen stängs
afterConnectionClosed körs när anslutningen avslutas, oavsett om det var klienten som lämnade eller servern som stängde den. Städa alltid upp här för att undvika läckor.
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) {
sessions.remove(session.getId());
System.out.println('Closed: ' + status.getCode());
}Statuskoder för stängning
Stängningshändelser innehåller en statuskod som förklarar varför:
- 1000 Normal stängning
- 1001 Lämnar (sidan avläses)
- 1006 Onormal stängning (ingen stängningsram)
- 1011 Serverfel
Genom att logga dessa blir det enklare att diagnostisera anslutningsproblem.
Registrera handlern
Koppla handlern till en sökväg i en konfigurationsklass som implementerar WebSocketConfigurer.
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new MyHandler(), '/ws')
.setAllowedOrigins('https://app.example.com');
}Rensa upp resurser
Resurser per anslutning (tidtagare, prenumerationer och buffertar) måste frigöras när anslutningen stängs och vid fel. Om du inte gör det uppstår minnesläckor som växer för varje anslutning som bryts.
Hjärtslag och tidsgränser för inaktivitet
Döda anslutningar kanske aldrig utlöser en korrekt stängning. Använd ping/pong-hjärtslag eller tidsgränser för inaktivitet för att upptäcka och rensa bort föråldrade sessioner så att sessionskartan förblir korrekt.
Snabbtest
Testa dina kunskaper om WebSocket-livscykeln.
Sammanfattning
Du har lärt dig att hantera WebSocket-livscykeln i Spring med TextWebSocketHandler: spåra sessioner vid anslutning, bearbeta meddelanden, hantera transportfel och städa upp när anslutningen stängs. Statuskoder för stängning, hjärtslag och tidsgränser för inaktivitet håller anslutningstillståndet sunt och fritt från läckor.
Lär dig WebSockets och realtidssystem med Spring 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
- 48
Vanliga frågor
Är lektionen ”Hantera WebSocket-livscykelhändelser i Spring” gratis?
Ja – hela texten till ”Hantera WebSocket-livscykelhändelser i Spring” 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 WebSockets och realtidssystem med Spring, kan Ni uppgradera till CoddyKit PRO. Kursen i WebSockets och realtidssystem med Spring innehåller totalt 4 lektioner.
Vad lär jag mig i ”Hantera WebSocket-livscykelhändelser i Spring”?
Lär er att hantera WebSocket-anslutningens livscykel i Spring genom att hantera händelser för anslutning, meddelanden, fel och frånkoppling med WebSocketHandler. Ni övar på WebSockets och realtidssystem med Spring 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 WebSockets och realtidssystem med Spring?
Du behöver inga förkunskaper. Utbildningen i WebSockets och realtidssystem med Spring 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 4 av 4.
Hur lång tid tar lektionen ”Hantera WebSocket-livscykelhändelser i Spring”?
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 WebSockets och realtidssystem med Spring-lektionen?
Ja. Varje WebSockets och realtidssystem med Spring-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
- Spring Boot för WebSockets
- Konfiguration av WebSocket-endpoints
- Grundläggande klient-server-meddelanden
- Hantera WebSocket-livscykelhändelser i Spring