Typindicatoren en online aanwezigheid
Leer typindicatoren en online aanwezigheid in realtime toe te voegen aan een chatapp met STOMP-events, heartbeats en presence tracking in Spring.
Typindicatoren en online aanwezigheid is een gratis WebSockets en realtime systemen met Spring-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject WebSockets en realtime systemen met Spring. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus WebSockets en realtime systemen met Spring bevat in totaal 4 lessen.
Verder dan berichten
Goede chatapps doen meer dan berichten afleveren. Typindicatoren en online aanwezigheid zorgen ervoor dat gesprekken live en responsief aanvoelen.
In deze les voeg je beide functies toe aan je bestaande STOMP-chat.
Wat is aanwezigheid?
Aanwezigheid laat gebruikers zien wie momenteel online, afwezig of offline is. Deze wordt in realtime bijgewerkt wanneer gebruikers verbinding maken en verbreken, zodat duidelijk is wanneer iemand beschikbaar is om te chatten.
Verbindingen bijhouden
Spring publiceert SessionConnectedEvent en SessionDisconnectEvent. Luister ernaar om een actuele verzameling online gebruikers bij te houden.
@EventListener
public void onConnect(SessionConnectedEvent event) {
String user = userFrom(event);
onlineUsers.add(user);
broadcastPresence(user, 'ONLINE');
}Verbindingen verbreken afhandelen
Wanneer een gebruiker de verbinding verbreekt, verwijder je die gebruiker en breng je anderen op de hoogte, zodat de aanwezigheidslijst correct blijft.
@EventListener
public void onDisconnect(SessionDisconnectEvent event) {
String user = userFrom(event);
onlineUsers.remove(user);
broadcastPresence(user, 'OFFLINE');
}Aanwezigheid uitzenden
Stuur updates over aanwezigheid naar een gedeeld onderwerp, zodat elke verbonden client zijn gebruikersinterface kan bijwerken.
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);
}Een model voor typgebeurtenissen
Typindicatoren zijn lichtgewicht gebeurtenissen en geen opgeslagen berichten. Definieer een kleine payload met de afzender, de ruimte en de informatie of de gebruiker is begonnen of gestopt met typen.
{
"type": "TYPING",
"room": "general",
"sender": "alice",
"typing": true
}Typgebeurtenissen ontvangen
Koppel een bestemming voor typgebeurtenissen en stuur ze door naar het onderwerp van de ruimte zonder ze op te slaan.
@MessageMapping('/chat.typing')
public void typing(TypingEvent event) {
messagingTemplate.convertAndSend(
'/topic/room.' + event.getRoom() + '.typing', event);
}Debouncen op de client
Clients mogen niet voor elke toetsaanslag een typgebeurtenis sturen. Pas debouncing toe: stuur één keer 'typing' en stuur daarna 'stopped' na een korte periode zonder activiteit. Dit vermindert het verkeer aanzienlijk.
let timer = null;
function onKeyPress() {
sendTyping(true);
clearTimeout(timer);
timer = setTimeout(function () { sendTyping(false); }, 2000);
}Heartbeats voor verouderde sessies
Verbroken netwerkverbindingen veroorzaken niet altijd een gebeurtenis voor het verbreken van de verbinding. Gebruik STOMP-heartbeats, zodat de server verbroken verbindingen kan detecteren en die gebruikers offline kan markeren. Zo blijft de aanwezigheid correct.
Aanwezigheid schalen
Bij meerdere serverinstanties moet aanwezigheid worden gedeeld. Sla online gebruikers op in een centrale opslag zoals Redis en zend wijzigingen uit naar alle instanties, zodat elke client dezelfde aanwezigheidslijst ziet.
Aandachtspunten voor privacy
Aanwezigheid en typen geven informatie over gebruikersactiviteit. Laat gebruikers bepalen wie dit mag zien en deel aanwezigheid alleen met mensen die deze informatie mogen zien (bijvoorbeeld contacten of leden van dezelfde ruimte), niet met iedereen op de server.
Snelle controle
Test je begrip van aanwezigheid en typindicatoren.
Samenvatting
Je hebt geleerd hoe je online aanwezigheid toevoegt met de sessie-events voor verbinden en verbreken van Spring, en hoe je typindicatoren toevoegt als lichtgewicht STOMP-events die niet worden opgeslagen. Debouncing, heartbeats, een gedeelde opslag voor schaalbaarheid en privacyinstellingen maken deze functies geschikt voor productie.
Leer WebSockets en realtime systemen met Spring met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 12
- Lessen
- 48
Veelgestelde vragen
Is de les “Typindicatoren en online aanwezigheid” gratis?
Ja — de volledige tekst van “Typindicatoren en online aanwezigheid” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus WebSockets en realtime systemen met Spring wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus WebSockets en realtime systemen met Spring bevat in totaal 4 lessen.
Wat leer ik in “Typindicatoren en online aanwezigheid”?
Leer typindicatoren en online aanwezigheid in realtime toe te voegen aan een chatapp met STOMP-events, heartbeats en presence tracking in Spring. Je oefent met WebSockets en realtime systemen met Spring door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met WebSockets en realtime systemen met Spring te beginnen?
Ervaring vooraf is niet nodig. WebSockets en realtime systemen met Spring op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “Typindicatoren en online aanwezigheid”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over WebSockets en realtime systemen met Spring?
Ja. Elke les over WebSockets en realtime systemen met Spring bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Een chatberichtenmodel ontwerpen
- Openbare chatruimtes implementeren
- Privéberichten met STOMP
- Typindicatoren en online aanwezigheid