WebSockets ja reaaliaikaiset järjestelmät Springillä · Oppitunti

Kohdennettu viestintä tietyille käyttäjille

Lähetätte yksityisiä käyttäjäkohtaisia viestejä STOMPilla user destination -kohteiden, @SendToUserin ja SimpMessagingTemplate.convertAndSendToUserin avulla.

Oppitunti 4/413 vaihetta

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
  • @SendToUser vastaa alkuperäiselle käyttäjälle
  • convertAndSendToUser lä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
Aloita maksutta

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

  1. WebSocket-kuuntelijat
  2. Viestimuuntimien mukauttaminen
  3. Käyttäjäistuntojen hallinta
  4. Kohdennettu viestintä tietyille käyttäjille
← Takaisin: WebSockets ja reaaliaikaiset järjestelmät Springillä