WebSockets och realtidssystem med Spring · Lektion

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.

Lektion 4 av 413 steg

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.

Gratis att börja

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

  1. Utforma en modell för chattmeddelanden
  2. Implementera offentliga chattrum
  3. Privata meddelanden med STOMP
  4. Skriver och onlinestatus
← Tillbaka till WebSockets och realtidssystem med Spring