Kohdennettu viestintä tietyille käyttäjille
Lähetätte yksityisiä käyttäjäkohtaisia viestejä STOMPilla user destination -kohteiden, @SendToUserin ja SimpMessagingTemplate.convertAndSendToUserin avulla.
Kohdennettu viestintä tietyille käyttäjille on ilmainen WebSockets ja reaaliaikaiset järjestelmät Springillä-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu WebSockets ja reaaliaikaiset järjestelmät Springillä-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. WebSockets ja reaaliaikaiset järjestelmät Springillä-kurssilla on yhteensä 4 oppituntia.
Lähetysten tuolla puolen
Tähän asti viestit menivät /topic-kohteeseen, jonka jokainen tilaaja vastaanottaa. Oikeat sovellukset tarvitsevat myös yksityisiä viestejä: chatissa lähetettävän kuiskauksen, henkilökohtaisen ilmoituksen tai yhdelle asiakkaalle tarkoitetun tilauspäivityksen.
Käyttäjäkohteet
Spring tukee /user-kohteiden etuliitettä. Kun asiakas tilaa kohteen /user/queue/notifications, Spring muuntaa sen yksilölliseksi istuntokohtaiseksi jonoksi, joten vain kyseinen käyttäjä saa viestin.
Mistä Principal tulee
Kohdennettu viestintä tarvitsee tiedon siitä, kuka istuntoa käyttää. Kättelyn aikana liitetty Principal (Spring Securitystä tai mukautetusta kättelykäsittelijästä) tarjoaa käyttäjänimen tunnisteeksi.
Lähettäminen @SendToUser-merkinnällä
Merkitse ohjainmenetelmä annotaatiolla @SendToUser. Palautusarvo toimitetaan vain käyttäjälle, joka lähetti käynnistävän viestin.
@MessageMapping("/private")
@SendToUser("/queue/reply")
public Note handle(Note in, Principal principal) {
return new Note("Hi " + principal.getName());
}Asiakkaan tilaus
Asiakas tilaa /user-etuliitteisen kohteen. Spring ratkaisee sen automaattisesti kyseisen asiakkaan yksityiseksi jonoksi.
stompClient.subscribe('/user/queue/reply', (msg) => {
console.log('Private:', JSON.parse(msg.body));
});Lähettäminen mistä tahansa Templaten avulla
Ohjaimen ulkopuolelta (esimerkiksi palvelusta tai ajoitetusta työstä) voit käyttää SimpMessagingTemplate.convertAndSendToUser-menetelmää tavoittaaksesi tietyn käyttäjän nimen perusteella.
messagingTemplate.convertAndSendToUser(
"alice", "/queue/notifications", new Alert("Payment received"));Miten ratkaiseminen toimii
UserDestinationMessageHandler yhdistää kohteen /user/{username}/queue/x todelliseen istuntokohtaiseen kohteeseen. Kohdistat viestin käyttäjälle nimen perusteella, ja Spring etsii hänen aktiiviset istuntonsa.
Useita istuntoja käyttäjää kohden
Yksi käyttäjä voi olla yhteydessä puhelimella ja kannettavalla tietokoneella. convertAndSendToUser toimittaa viestin kaikkiin kyseisen käyttäjän aktiivisiin istuntoihin, joten ilmoitukset näkyvät kaikkialla, missä hän on kirjautuneena.
Yhteen istuntoon kohdistaminen
Jos haluat tavoittaa vain yhden laitteen, välitä otsakkeet, joilla valitaan tietty simpSessionId, sen sijaan että lähettäisit viestin käyttäjän kaikkiin istuntoihin.
SimpMessageHeaderAccessor h = SimpMessageHeaderAccessor.create(SimpMessageType.MESSAGE);
h.setSessionId(sessionId);
h.setLeaveMutable(true);
messagingTemplate.convertAndSendToUser(user, "/queue/reply", body, h.getMessageHeaders());Käyttäjäkohteet klusterissa
Yhdellä palvelimella yksinkertainen välittäjä ratkaisee käyttäjäkohteet muistissa. Useiden solmujen ympäristössä tarvitset ulkoisen välittäjän (RabbitMQ) sekä UserRegistry-rekisterin lähettämät päivitykset, jotta solmu voi reitittää viestin muualla yhdistettynä olevalle käyttäjälle.
Tietoturvahuomautus
Älä koskaan anna asiakkaan valita toisen käyttäjän kohdetta. Johda kohde aina todennetusta Principal-oliosta, älä asiakkaan toimittamista tiedoista, jotta viestien kaappaaminen estyy.
Pikatarkistus
Testaa, mitä tiedät käyttäjäkohtaisesta viestinnästä.
Kertaus
Opit toimittamaan yksityisiä viestejä:
/user-etuliite yhdistyy istuntokohtaisiin jonoihin@SendToUservastaa alkuperäiselle käyttäjälleconvertAndSendToUserlähettää viestin nimetylle käyttäjälle mistä tahansa- Käyttäjän kaikki istunnot tavoitetaan yhdessä; yhteen istuntoon kohdistetaan viesti istunto-otsakkeilla
- Johda kohde aina todennetusta
Principal-oliosta
Opi WebSockets ja reaaliaikaiset järjestelmät Springillä tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 12
- Oppitunnit
- 48
Usein kysytyt kysymykset
Onko oppitunti ”Kohdennettu viestintä tietyille käyttäjille” ilmainen?
Kyllä – oppitunnin ”Kohdennettu viestintä tietyille käyttäjille” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko WebSockets ja reaaliaikaiset järjestelmät Springillä-kurssin, päivitä CoddyKit PROhon. WebSockets ja reaaliaikaiset järjestelmät Springillä-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Kohdennettu viestintä tietyille käyttäjille”?
Lähetätte yksityisiä käyttäjäkohtaisia viestejä STOMPilla user destination -kohteiden, @SendToUserin ja SimpMessagingTemplate.convertAndSendToUserin avulla. Harjoittelet WebSockets ja reaaliaikaiset järjestelmät Springillä-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni WebSockets ja reaaliaikaiset järjestelmät Springillä-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin WebSockets ja reaaliaikaiset järjestelmät Springillä-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Kohdennettu viestintä tietyille käyttäjille”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä WebSockets ja reaaliaikaiset järjestelmät Springillä-oppitunnilla?
Kyllä. Jokainen WebSockets ja reaaliaikaiset järjestelmät Springillä-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- WebSocket-kuuntelijat
- Viestimuuntimien mukauttaminen
- Käyttäjäistuntojen hallinta
- Kohdennettu viestintä tietyille käyttäjille