Skriveindikatorer og onlinetilstedeværelse
Lær at tilføje skriveindikatorer i realtid og onlinetilstedeværelse til en chatapp med STOMP-hændelser, heartbeats og sporing af tilstedeværelse i Spring.
Skriveindikatorer og onlinetilstedeværelse er en gratis WebSockets og realtidssystemer med Spring-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i WebSockets og realtidssystemer med Spring, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. WebSockets og realtidssystemer med Spring-kurset indeholder 4 lektioner i alt.
Mere end meddelelser
Gode chatapps gør mere end at levere meddelelser. Skriveindikatorer og onlinestatus får samtaler til at føles live og responsive.
Denne lektion tilføjer begge funktioner oven på din eksisterende STOMP-chat.
Hvad er tilstedeværelse?
Tilstedeværelse fortæller brugerne, hvem der er online, fraværende eller offline. Den opdateres i realtid, når brugere opretter og afbryder forbindelsen, og giver det sociale signal, at en person er tilgængelig for chat.
Sporing af forbindelser
Spring udgiver SessionConnectedEvent og SessionDisconnectEvent. Lyt efter dem for at vedligeholde et live-sæt af onlinebrugere.
@EventListener
public void onConnect(SessionConnectedEvent event) {
String user = userFrom(event);
onlineUsers.add(user);
broadcastPresence(user, 'ONLINE');
}Håndtering af afbrydelser
Når en bruger afbryder forbindelsen, skal du fjerne brugeren og underrette de andre, så tilstedeværelseslisten forbliver korrekt.
@EventListener
public void onDisconnect(SessionDisconnectEvent event) {
String user = userFrom(event);
onlineUsers.remove(user);
broadcastPresence(user, 'OFFLINE');
}Udsendelse af tilstedeværelse
Send opdateringer om tilstedeværelse til et delt topic, så alle tilsluttede klienter kan opdatere deres brugergrænseflade.
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 model for skrivehændelser
Skriveindikatorer er lette hændelser, ikke gemte meddelelser. Definér en lille nyttedata, der indeholder afsenderen, rummet og oplysninger om, hvorvidt brugeren er begyndt eller holdt op med at skrive.
{
"type": "TYPING",
"room": "general",
"sender": "alice",
"typing": true
}Modtagelse af skrivehændelser
Knyt en destination til skrivehændelser, og videresend dem til rummets topic uden at gemme dem.
@MessageMapping('/chat.typing')
public void typing(TypingEvent event) {
messagingTemplate.convertAndSend(
'/topic/room.' + event.getRoom() + '.typing', event);
}Debouncing på klienten
Klienter bør ikke sende en skrivehændelse for hvert tastetryk. Brug debouncing: send 'typing' én gang, og send derefter 'stopped' efter en kort periode uden aktivitet. Det reducerer trafikken markant.
let timer = null;
function onKeyPress() {
sendTyping(true);
clearTimeout(timer);
timer = setTimeout(function () { sendTyping(false); }, 2000);
}Heartbeats for forældede sessioner
Netværksafbrydelser udløser ikke altid en afbrydelseshændelse. Brug STOMP-heartbeats, så serveren kan registrere døde forbindelser og markere de pågældende brugere som offline, så tilstedeværelsen forbliver korrekt.
Skalering af tilstedeværelse
Med flere serverinstanser skal tilstedeværelsen deles. Gem onlinebrugere i et centralt lager som Redis, og udsend ændringer på tværs af instanser, så alle klienter ser en ensartet tilstedeværelsesliste.
Overvejelser om privatliv
Tilstedeværelse og skrivning afslører brugeraktivitet. Lad brugerne styre synligheden, og del kun tilstedeværelse med personer, der bør kunne se den (for eksempel kontakter eller medlemmer af det samme rum), ikke med alle på serveren.
Hurtigt tjek
Test din forståelse af tilstedeværelse og skriveindikatorer.
Opsummering
Du har lært at tilføje onlinestatus ved hjælp af Springs hændelser for sessionsforbindelse og -afbrydelse samt skriveindikatorer som lette STOMP-hændelser, der ikke gemmes. Debouncing, heartbeats, et delt lager til skalering og privatlivskontroller gør disse funktioner klar til produktion.
Lær WebSockets og realtidssystemer med Spring 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
- 12
- Lektioner
- 48
Ofte stillede spørgsmål
Er lektionen “Skriveindikatorer og onlinetilstedeværelse” gratis?
Ja — hele teksten til “Skriveindikatorer og onlinetilstedeværelse” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af WebSockets og realtidssystemer med Spring-kurset, skal du opgradere til CoddyKit PRO. WebSockets og realtidssystemer med Spring-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Skriveindikatorer og onlinetilstedeværelse”?
Lær at tilføje skriveindikatorer i realtid og onlinetilstedeværelse til en chatapp med STOMP-hændelser, heartbeats og sporing af tilstedeværelse i Spring. Du øver dig i WebSockets og realtidssystemer med Spring 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å WebSockets og realtidssystemer med Spring?
Der kræves ingen tidligere erfaring. WebSockets og realtidssystemer med Spring 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 4 af 4.
Hvor lang tid tager lektionen “Skriveindikatorer og onlinetilstedeværelse”?
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 WebSockets og realtidssystemer med Spring-lektion?
Ja. Alle WebSockets og realtidssystemer med Spring-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
- Design af en chatmeddelelsesmodel
- Implementering af offentlige chatrum
- Private meddelelser med STOMP
- Skriveindikatorer og onlinetilstedeværelse