WebSockets dan Sistem Masa Nyata dengan Spring · Pelajaran

Menjejaki Kehadiran dan Status Dalam Talian

Bina sistem kehadiran masa nyata yang menunjukkan siapa dalam talian, menyiarkan peristiwa sambungan dan pemutusan serta memaparkan status pengguna secara langsung.

Pelajaran 4 daripada 413 langkah

Menjejaki Kehadiran dan Status Dalam Talian ialah pelajaran WebSockets dan Sistem Masa Nyata dengan Spring percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran WebSockets dan Sistem Masa Nyata dengan Spring, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus WebSockets dan Sistem Masa Nyata dengan Spring merangkumi sejumlah 4 pelajaran.

Apakah Kehadiran?

Kehadiran ialah mengetahui siapa yang sedang dalam talian: titik hijau dalam aplikasi sembang, kursor langsung dalam penyunting kolaboratif dan senarai yang sedang aktif. Ini ialah salah satu ciri masa nyata yang paling banyak diminta.

Kehadiran Berkaitan dengan Peristiwa Kitar Hayat

Inti pati perkara ini: kehadiran terhasil daripada kitar hayat sambungan. Apabila sesi dibuka, tandakan pengguna sebagai dalam talian; apabila sesi ditutup, tandakan mereka sebagai luar talian, kemudian siarkan perubahan itu.

Mendengar Peristiwa Sambungan

Spring menerbitkan SessionConnectedEvent apabila sesi STOMP diwujudkan. Gunakannya untuk merekodkan pengguna sebagai dalam talian.

@EventListener
public void onConnect(SessionConnectedEvent e) {
  String user = e.getUser().getName();
  presence.markOnline(user);
  broadcast(user, "ONLINE");
}

Mendengar Peristiwa Pemutusan Sambungan

SessionDisconnectEvent yang sepadan dicetuskan apabila sesi ditutup. Tandakan pengguna sebagai luar talian dan siarkan perubahan itu.

@EventListener
public void onDisconnect(SessionDisconnectEvent e) {
  String user = userFor(e.getSessionId());
  presence.markOffline(user);
  broadcast(user, "OFFLINE");
}

Menyimpan Keadaan Kehadiran

Untuk satu pelayan, peta serentak sudah memadai. Untuk kelompok, simpan kehadiran dalam Redis supaya setiap nod melihat set pengguna dalam talian yang sama.

redis.opsForSet().add("online:users", username);
redis.opsForValue().set("presence:" + username, "ONLINE", Duration.ofMinutes(2));

Menyiarkan Perubahan Status

Hantar setiap perubahan ke topik kehadiran supaya setiap pelanggan yang berminat mengemas kini antara muka pengguna secara langsung.

messagingTemplate.convertAndSend("/topic/presence",
  new PresenceEvent(username, status));

Berbilang Tab dan Peranti

Pengguna dengan dua tab mempunyai dua sesi. Kira rujukan sesi: hanya tandakan luar talian apabila sesi terakhir ditutup, atau status akan berkelip-kelip.

Mengendalikan Pemutusan Sambungan Tidak Teratur

Kerosakan mungkin tidak menghantar penutupan yang sempurna. Gabungkan kehadiran dengan denyut jantung dan TTL: jika tiada denyut jantung diterima sebelum kunci tamat tempoh, anggap pengguna sebagai luar talian.

Cap Masa Terakhir Dilihat

Selain dalam talian/luar talian, rekodkan masa terakhir dilihat apabila terputus sambungan. Antara muka pengguna kemudiannya boleh memaparkan "aktif 5 minit yang lalu" untuk pengguna luar talian.

redis.opsForValue().set("lastseen:" + username, Instant.now().toString());

Menghantar Petikan Awal

Apabila pelanggan bersambung buat kali pertama, pelanggan memerlukan senarai pengguna dalam talian semasa, bukan sekadar perubahan akan datang. Hantar petikan semasa melanggan, kemudian alirkan perubahan.

@SubscribeMapping("/presence.init")
public Set<String> initial() {
  return presence.onlineUsers();
}

Pertimbangan Privasi

Kehadiran boleh membocorkan corak tingkah laku. Sediakan mod tidak kelihatan dan hormatinya pada bahagian pelayan, supaya pengguna yang memilih untuk tidak berkongsi tidak pernah disiarkan sebagai dalam talian.

Semakan Pantas

Uji pengetahuan anda tentang kehadiran.

Imbas Kembali

Anda telah membina ciri kehadiran:

  • Kehadiran terhasil daripada peristiwa kitar hayat sambung/putus sambungan
  • Gunakan SessionConnectedEvent / SessionDisconnectEvent dan siarkan perubahan
  • Simpan keadaan dikongsi dalam Redis untuk pengelompokan; kira rujukan bagi berbilang sesi
  • Gabungkan dengan denyut jantung dan TTL untuk mengesan pemutusan sambungan tidak teratur
  • Hantar petikan awal, jejaki masa terakhir dilihat dan hormati mod tidak kelihatan
Percuma untuk bermula

Pelajari WebSockets dan Sistem Masa Nyata dengan Spring dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
12
Pelajaran
48

Soalan Lazim

Adakah pelajaran “Menjejaki Kehadiran dan Status Dalam Talian” percuma?

Ya — teks penuh “Menjejaki Kehadiran dan Status Dalam Talian” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus WebSockets dan Sistem Masa Nyata dengan Spring, tingkat taraf kepada CoddyKit PRO. Kursus WebSockets dan Sistem Masa Nyata dengan Spring merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Menjejaki Kehadiran dan Status Dalam Talian”?

Bina sistem kehadiran masa nyata yang menunjukkan siapa dalam talian, menyiarkan peristiwa sambungan dan pemutusan serta memaparkan status pengguna secara langsung. Anda berlatih WebSockets dan Sistem Masa Nyata dengan Spring menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan WebSockets dan Sistem Masa Nyata dengan Spring?

Tiada pengalaman terdahulu diperlukan. Pembelajaran WebSockets dan Sistem Masa Nyata dengan Spring di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Menjejaki Kehadiran dan Status Dalam Talian” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran WebSockets dan Sistem Masa Nyata dengan Spring ini?

Ya. Setiap pelajaran WebSockets dan Sistem Masa Nyata dengan Spring menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Acara Dihantar Pelayan (SSE) berbanding WebSockets
  2. Seni Bina Tolakan Data Masa Nyata
  3. Melaksanakan Pemberitahuan Pengguna
  4. Menjejaki Kehadiran dan Status Dalam Talian
← Kembali ke WebSockets dan Sistem Masa Nyata dengan Spring