Skriver och onlinestatus
Lär er att lägga till realtidsindikatorer för skrivande och onlinestatus i en chattapp med STOMP-händelser, heartbeats och närvarospårning i Spring.
Skriver och onlinestatus ä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.
Bortom meddelanden
Bra chattappar gör mer än att leverera meddelanden. Skrivindikatorer och onlinestatus får konversationer att kännas levande och responsiva.
I den här lektionen lägger ni till båda funktionerna ovanpå er befintliga STOMP-chatt.
Vad är närvaro?
Närvaro visar användarna vilka som är online, borta eller offline. Den uppdateras i realtid när användare ansluter och kopplar från, vilket ger den sociala signalen att någon är tillgänglig för att chatta.
Spåra anslutningar
Spring publicerar SessionConnectedEvent och SessionDisconnectEvent. Lyssna efter dem för att underhålla en aktuell mängd av onlineanvändare.
@EventListener
public void onConnect(SessionConnectedEvent event) {
String user = userFrom(event);
onlineUsers.add(user);
broadcastPresence(user, 'ONLINE');
}Hantera frånkopplingar
När en användare kopplar från tar ni bort användaren och meddelar de andra, så att närvarolistan förblir korrekt.
@EventListener
public void onDisconnect(SessionDisconnectEvent event) {
String user = userFrom(event);
onlineUsers.remove(user);
broadcastPresence(user, 'OFFLINE');
}Sänd närvaro
Skicka närvarouppdateringar till ett delat ämne så att varje ansluten klient kan uppdatera sitt användargränssnitt.
private void broadcastPresence(String user, String status) {
Map<String, String> event = new HashMap<>();
event.put('user', user);
event.put('status', status);
messagingTemplate.convertAndSend('/topic/presence', event);
}En modell för skrivhändelser
Skrivindikatorer är händelser med låg belastning, inte lagrade meddelanden. Definiera en liten nyttolast som innehåller avsändaren, rummet och om användaren började eller slutade skriva.
{
"type": "TYPING",
"room": "general",
"sender": "alice",
"typing": true
}Ta emot skrivhändelser
Mappa en destination för skrivhändelser och vidarebefordra dem till rummets ämne utan att spara dem.
@MessageMapping('/chat.typing')
public void typing(TypingEvent event) {
messagingTemplate.convertAndSend(
'/topic/room.' + event.getRoom() + '.typing', event);
}Avstudsning på klienten
Klienter bör inte skicka en skrivhändelse för varje tangenttryckning. Avstudsa: skicka 'typing' en gång och skicka sedan 'stopped' efter en kort period utan aktivitet. Detta minskar trafiken avsevärt.
let timer = null;
function onKeyPress() {
sendTyping(true);
clearTimeout(timer);
timer = setTimeout(function () { sendTyping(false); }, 2000);
}Hjärtslag för inaktuella sessioner
Nätverksavbrott utlöser inte alltid en frånkopplingshändelse. Använd STOMP-hjärtslag så att servern kan upptäcka döda anslutningar och markera dessa användare som offline, vilket håller närvaron korrekt.
Skala närvaro
Med flera serverinstanser måste närvaron delas. Lagra onlineanvändare i ett centralt lager, till exempel Redis, och sänd ändringar mellan instanserna så att varje klient ser en konsekvent närvarolista.
Integritetsöverväganden
Närvaro och skrivande avslöjar användaraktivitet. Låt användarna styra synligheten och dela endast närvaro med personer som bör se den, till exempel kontakter eller medlemmar i samma rum, inte med alla på servern.
Snabb kontroll
Testa er förståelse av närvaro och skrivindikatorer.
Sammanfattning
Ni lärde er att lägga till onlinestatus med hjälp av Springs sessionsanslutnings- och frånkopplingshändelser samt skrivindikatorer som lätta STOMP-händelser som inte sparas. Avstudsning, hjärtslag, ett delat lager för skalning och integritetskontroller gör dessa funktioner redo för produktion.
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 ”Skriver och onlinestatus” gratis?
Ja – hela texten till ”Skriver och onlinestatus” 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 ”Skriver och onlinestatus”?
Lär er att lägga till realtidsindikatorer för skrivande och onlinestatus i en chattapp med STOMP-händelser, heartbeats och närvarospårning i Spring. 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 ”Skriver och onlinestatus”?
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
- Utforma en modell för chattmeddelanden
- Implementera offentliga chattrum
- Privata meddelanden med STOMP
- Skriver och onlinestatus