Kirjoitusilmaisimet ja paikallaolo
Opitte lisäämään chat-sovellukseen reaaliaikaiset kirjoitusilmaisimet ja paikallaolon STOMP-tapahtumilla, heartbeat-viesteillä ja Springin presence-seurannalla.
Kirjoitusilmaisimet ja paikallaolo 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.
Viestien tuolla puolen
Hyvät chat-sovellukset tekevät muutakin kuin välittävät viestejä. Kirjoitusilmaisimet ja online-tila saavat keskustelut tuntumaan reaaliaikaisilta ja reagoivilta.
Tässä oppitunnissa lisätään molemmat ominaisuudet olemassa olevan STOMP-chatin päälle.
Mitä online-tila tarkoittaa?
Online-tila kertoo käyttäjille, kuka on parhaillaan online-tilassa, poissa tai offline-tilassa. Tila päivittyy reaaliajassa käyttäjien yhdistäessä ja katkaistessa yhteyden, mikä antaa sosiaalisen vihjeen henkilön saatavuudesta keskusteluun.
Yhteyksien seuranta
Spring julkaisee tapahtumat SessionConnectedEvent ja SessionDisconnectEvent. Kuuntele niitä ylläpitääksesi reaaliaikaista joukkoa online-tilassa olevista käyttäjistä.
@EventListener
public void onConnect(SessionConnectedEvent event) {
String user = userFrom(event);
onlineUsers.add(user);
broadcastPresence(user, 'ONLINE');
}Yhteyksien katkeamisen käsittely
Kun käyttäjän yhteys katkeaa, poista hänet ja ilmoita asiasta muille, jotta online-tilan luettelo pysyy ajan tasalla.
@EventListener
public void onDisconnect(SessionDisconnectEvent event) {
String user = userFrom(event);
onlineUsers.remove(user);
broadcastPresence(user, 'OFFLINE');
}Online-tilan lähettäminen
Lähetä online-tilan päivitykset jaettuun aiheeseen, jotta jokainen yhdistetty asiakas voi päivittää käyttöliittymänsä.
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);
}Kirjoitustapahtuman malli
Kirjoitusilmaisimet ovat kevyitä tapahtumia, eivät tallennettuja viestejä. Määritä pieni hyötykuorma, joka sisältää lähettäjän, huoneen sekä tiedon siitä, aloittiko vai lopettiko lähettäjä kirjoittamisen.
{
"type": "TYPING",
"room": "general",
"sender": "alice",
"typing": true
}Kirjoitustapahtumien vastaanottaminen
Määritä kirjoitustapahtumille kohde ja välitä ne huoneen aiheeseen tallentamatta niitä.
@MessageMapping('/chat.typing')
public void typing(TypingEvent event) {
messagingTemplate.convertAndSend(
'/topic/room.' + event.getRoom() + '.typing', event);
}Tapahtumien debouncing asiakasohjelmassa
Asiakkaiden ei pidä lähettää kirjoitustapahtumaa jokaisesta näppäinpainalluksesta. Käytä debouncingia: lähetä 'typing' kerran ja sen jälkeen 'stopped', kun käyttäjä on ollut hetken toimettomana. Tämä vähentää liikennettä huomattavasti.
let timer = null;
function onKeyPress() {
sendTyping(true);
clearTimeout(timer);
timer = setTimeout(function () { sendTyping(false); }, 2000);
}Sydänäänet vanhentuneille istunnoille
Verkkoyhteyden katkeaminen ei aina aiheuta yhteyden katkeamisen tapahtumaa. Käytä STOMP-sydänääniä, jotta palvelin voi tunnistaa kuolleet yhteydet ja merkitä kyseiset käyttäjät offline-tilaan, jolloin online-tila pysyy ajan tasalla.
Online-tilan skaalaaminen
Kun palvelininstansseja on useita, online-tila on jaettava niiden kesken. Tallenna online-käyttäjät keskitettyyn tietovarastoon, kuten Redisiin, ja lähetä muutokset instanssien välillä, jotta jokainen asiakas näkee yhdenmukaisen online-tilan luettelon.
Tietosuojaa koskevat näkökohdat
Online-tila ja kirjoittaminen paljastavat käyttäjän toimintaa. Anna käyttäjien hallita näkyvyyttään ja jaa online-tila vain niille, joiden kuuluu nähdä se (esimerkiksi yhteyshenkilöille tai saman huoneen jäsenille), ei kaikille palvelimen käyttäjille.
Pikatarkistus
Testaa, miten hyvin ymmärrät online-tilan ja kirjoitusilmaisimet.
Kertaus
Opit lisäämään online-tilan Springin istunnon yhdistämis- ja katkaisutapahtumien avulla sekä toteuttamaan kirjoitusilmaisimet kevyinä, tallentamattomina STOMP-tapahtumina. Debouncing, sydänäänet, skaalauksessa käytettävä jaettu tietovarasto ja tietosuoja-asetukset tekevät näistä ominaisuuksista tuotantokelpoisia.
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 ”Kirjoitusilmaisimet ja paikallaolo” ilmainen?
Kyllä – oppitunnin ”Kirjoitusilmaisimet ja paikallaolo” 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 ”Kirjoitusilmaisimet ja paikallaolo”?
Opitte lisäämään chat-sovellukseen reaaliaikaiset kirjoitusilmaisimet ja paikallaolon STOMP-tapahtumilla, heartbeat-viesteillä ja Springin presence-seurannalla. 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 ”Kirjoitusilmaisimet ja paikallaolo”-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
- Chat-viestimallin suunnittelu
- Julkisten chat-huoneiden toteuttaminen
- Yksityisviestintä STOMP:lla
- Kirjoitusilmaisimet ja paikallaolo