WebSockets dan Sistem Masa Nyata dengan Spring · Pelajaran

Menghantar dan Menerima Mesej STOMP

Laksanakan pengeluar dan pengguna mesej menggunakan STOMP, termasuk destinasi topik dan destinasi khusus pengguna.

Pelajaran 3 daripada 411 langkah

Menghantar dan Menerima Mesej STOMP ialah pelajaran WebSockets dan Sistem Masa Nyata dengan Spring percuma di CoddyKit. Ini ialah pelajaran 3 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.

Pengenalan kepada Pemesejan STOMP

Dalam pelajaran ini, kita akan mempelajari cara menghantar mesej daripada klien kepada pelayan Spring kita dan cara pelayan kemudiannya boleh menghantar mesej kembali, sama ada kepada topik umum atau pengguna tertentu.

STOMP menyediakan cara yang jelas dan tersusun untuk menghalakan mesej masa nyata ini, sekali gus menjadikan aplikasi kita lebih mudah dijangka dan diurus.

Pengeluar dan Pengguna

Fikirkan pemesejan dari segi pengeluar dan pengguna:

  • Pengeluar menghantar mesej (contohnya, klien sembang menghantar mesej).
  • Pengguna menerima mesej (contohnya, klien sembang lain memaparkan mesej itu).

Dalam aplikasi masa nyata, klien sering bertindak sebagai kedua-duanya!

Menghantar kepada Topik Awam

Topik ialah destinasi awam. Apabila mesej dihantar kepada topik, semua klien yang sedang melanggan topik itu akan menerima mesej tersebut.

Ia seperti saluran siaran atau ruang sembang awam yang membolehkan semua orang mendengar perkara yang dikatakan.

Laluan topik biasa bermula dengan /topic/, contohnya /topic/public-chat atau /topic/news-feed.

Pelayan: Mengendalikan Mesej Topik

Pada pelayan Spring, kami menggunakan @MessageMapping untuk mengendalikan mesej masuk daripada klien ke destinasi tertentu. Kami kemudiannya boleh menggunakan SimpMessagingTemplate untuk menghantar mesej kepada topik.

Coretan ini menunjukkan kaedah pelayan yang menerima mesej dan kemudian menyiarkannya kepada topik.

@Controller
public class ChatController {

  @Autowired
  private SimpMessagingTemplate messagingTemplate;

  @MessageMapping("/chat.sendMessage")
  public void sendMessage(@Payload String chatMessage) {
    // Client sends to /app/chat.sendMessage
    // Server broadcasts to /topic/public-chat
    messagingTemplate.convertAndSend(
        "/topic/public-chat", "New message: " + chatMessage);
  }
}

Klien: Melanggan Topik

Pada sebelah klien (contohnya, JavaScript), anda melanggan topik untuk menerima mesej. Apabila pelayan menghantar mesej ke /topic/public-chat, semua klien yang melanggan akan menerimanya.

Klien mungkin melanggan seperti ini:

stompClient.subscribe('/topic/public-chat', function(message) { // Handle received message });

Pemesejan Khusus Pengguna

Adakalanya anda perlu menghantar mesej terus kepada seorang pengguna tertentu, bukannya kepada topik awam. Ini dipanggil pemesejan khusus pengguna.

Ia sesuai untuk:

  • Mesej sembang peribadi
  • Pemberitahuan peribadi
  • Amaran terus

STOMP dan Spring mengendalikan penghalaan ini secara automatik untuk anda.

Pelayan: Menghantar kepada Pengguna

SimpMessagingTemplate Spring mempunyai kaedah khas, convertAndSendToUser, untuk menyasarkan mesej kepada pengguna tertentu. Anda memberikan nama pengguna dan destinasi khusus dalam baris gilir pengguna tersebut.

Rangka kerja ini menterjemahkan /user/{username}/queue/messages kepada baris gilir unik untuk pengguna itu.

@Controller
public class UserController {

  @Autowired
  private SimpMessagingTemplate messagingTemplate;

  @MessageMapping("/private.send")
  public void sendPrivateMessage(
      @Payload String privateMessage, Principal principal) {
    // principal.getName() gets the current user's username
    String recipient = "someOtherUser"; // This would come from payload

    messagingTemplate.convertAndSendToUser(
        recipient, "/queue/private-messages", 
        "From " + principal.getName() + ": " + privateMessage);
  }
}

Klien: Melanggan Baris Gilir Pengguna

Klien melanggan baris gilir khusus pengguna miliknya untuk menerima mesej peribadi. Laluan itu biasanya kelihatan seperti /user/queue/private-messages.

Perkara penting di sini ialah awalan /user adalah khas. Pembroker STOMP menghalakan mesej yang dihantar kepada pengguna tertentu secara automatik ke baris gilir unik khusus untuk sesi pengguna tersebut.

Muatan Mesej

Mesej yang dihantar melalui STOMP biasanya membawa data dalam muatan (isi mesej). Format yang paling biasa untuk data ini ialah JSON.

Sokongan STOMP Spring menukar objek Java kepada JSON secara automatik (dan sebaliknya) apabila anda menggunakan kaedah @Payload dan convertAndSend, menjadikannya sangat mudah untuk bekerja dengan data berstruktur.

Semakan Ringkas: Destinasi STOMP

Anda mahu menghantar pemberitahuan peribadi kepada seorang pengguna tertentu sahaja. Apakah jenis destinasi STOMP yang patut anda gunakan?

Ulang Kaji: Menghantar dan Menerima

Kita telah meneroka cara menghantar dan menerima mesej STOMP dalam aplikasi Spring:

  • Topik (contohnya, /topic/public-chat) adalah untuk menyiarkan mesej kepada semua klien yang melanggan.
  • Destinasi khusus pengguna (contohnya, /user/queue/private-messages) adalah untuk menghantar mesej peribadi kepada seorang pengguna.
  • SimpMessagingTemplate Spring dan anotasi @MessageMapping memudahkan proses menghantar dan menerima.

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 “Menghantar dan Menerima Mesej STOMP” percuma?

Ya — teks penuh “Menghantar dan Menerima Mesej STOMP” 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 “Menghantar dan Menerima Mesej STOMP”?

Laksanakan pengeluar dan pengguna mesej menggunakan STOMP, termasuk destinasi topik dan destinasi khusus pengguna. 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 3 daripada 4.

Berapa lamakah pelajaran “Menghantar dan Menerima Mesej STOMP” 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. Pengenalan kepada Protokol STOMP
  2. Mengkonfigurasi STOMP dengan Spring
  3. Menghantar dan Menerima Mesej STOMP
  4. Melindungi Titik Akhir STOMP dengan Spring Security
← Kembali ke WebSockets dan Sistem Masa Nyata dengan Spring