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.
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/SessionDisconnectEventdan 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
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
- Acara Dihantar Pelayan (SSE) berbanding WebSockets
- Seni Bina Tolakan Data Masa Nyata
- Melaksanakan Pemberitahuan Pengguna
- Menjejaki Kehadiran dan Status Dalam Talian