Gerichte messaging aan specifieke gebruikers
Verstuur privéberichten per gebruiker via STOMP met user destinations, @SendToUser en SimpMessagingTemplate.convertAndSendToUser.
Gerichte messaging aan specifieke gebruikers 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 broadcasts
Tot nu toe gingen berichten naar een /topic die elke abonnee ontvangt. Echte apps hebben ook privéberichten nodig: een chatfluisterbericht, een persoonlijke melding of een orderupdate voor één klant.
Bestemmingen voor gebruikers
Spring ondersteunt het voorvoegsel /user voor bestemmingen. Wanneer een client zich abonneert op /user/queue/notifications, herschrijft Spring dit naar een unieke wachtrij per sessie, zodat alleen die gebruiker het bericht ontvangt.
Waar de Principal vandaan komt
Gerichte berichtgeving moet weten wie bij een sessie hoort. De Principal die tijdens de handshake is gekoppeld (van Spring Security of een aangepaste handshakehandler) levert de sleutel met de gebruikersnaam.
Versturen met @SendToUser
In een controllermethode gebruik je de annotatie @SendToUser. De retourwaarde wordt alleen afgeleverd bij de gebruiker die het bericht heeft verzonden dat de actie activeerde.
@MessageMapping("/private")
@SendToUser("/queue/reply")
public Note handle(Note in, Principal principal) {
return new Note("Hi " + principal.getName());
}Het clientabonnement
De client abonneert zich op de bestemming met het voorvoegsel /user. Spring vertaalt deze automatisch naar de privéwachtrij van die client.
stompClient.subscribe('/user/queue/reply', (msg) => {
console.log('Private:', JSON.parse(msg.body));
});Van overal pushen met de template
Gebruik buiten een controller (bijvoorbeeld vanuit een service of geplande taak) SimpMessagingTemplate.convertAndSendToUser om een specifieke gebruiker op naam te bereiken.
messagingTemplate.convertAndSendToUser(
"alice", "/queue/notifications", new Alert("Payment received"));Hoe de vertaling werkt
UserDestinationMessageHandler vertaalt /user/{username}/queue/x naar de daadwerkelijke sessiespecifieke bestemming. Je spreekt gebruikers op naam aan; Spring vindt hun actieve sessies.
Meerdere sessies per gebruiker
Eén gebruiker kan verbonden zijn vanaf een telefoon en een laptop. convertAndSendToUser levert het bericht af bij alle actieve sessies van die gebruiker, zodat meldingen overal verschijnen waar die gebruiker is ingelogd.
Eén sessie selecteren
Om slechts één apparaat te bereiken, geef je headers mee die een specifieke simpSessionId selecteren, in plaats van het bericht naar elke sessie van de gebruiker te sturen.
SimpMessageHeaderAccessor h = SimpMessageHeaderAccessor.create(SimpMessageType.MESSAGE);
h.setSessionId(sessionId);
h.setLeaveMutable(true);
messagingTemplate.convertAndSendToUser(user, "/queue/reply", body, h.getMessageHeaders());Bestemmingen voor gebruikers in een cluster
Met één server vertaalt de eenvoudige broker bestemmingen voor gebruikers in het geheugen. Met meerdere nodes heb je een externe broker (RabbitMQ) plus een UserRegistry-broadcast nodig, zodat een node een gebruiker kan bereiken die elders verbonden is.
Beveiligingsopmerking
Laat een client nooit de bestemming van een andere gebruiker kiezen. Leid het doel altijd af van de geauthenticeerde Principal, niet van gegevens die door de client zijn aangeleverd, om het kapen van berichten te voorkomen.
Snelle controle
Test je kennis van berichtgeving per gebruiker.
Samenvatting
Je hebt privéberichten afgeleverd:
- Het voorvoegsel
/userwordt vertaald naar wachtrijen per sessie @SendToUserantwoordt de oorspronkelijke gebruikerconvertAndSendToUserpusht vanuit elke locatie naar een gebruiker met een bepaalde naam- Meerdere sessies per gebruiker worden samen bereikt; selecteer er één met sessieheaders
- Leid het doel altijd af van de geauthenticeerde
Principal
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 “Gerichte messaging aan specifieke gebruikers” gratis?
Ja — de volledige tekst van “Gerichte messaging aan specifieke gebruikers” 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 “Gerichte messaging aan specifieke gebruikers”?
Verstuur privéberichten per gebruiker via STOMP met user destinations, @SendToUser en SimpMessagingTemplate.convertAndSendToUser. 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 “Gerichte messaging aan specifieke gebruikers”?
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
- WebSocket-interceptors
- Berichtconverters aanpassen
- Gebruikerssessies beheren
- Gerichte messaging aan specifieke gebruikers