Menghantar Mesej Soket Web Tertentu kepada Pelanggan dalam Go (Menggunakan Gorila)
Soket Web menyediakan protokol berorientasikan sambungan untuk komunikasi kependaman rendah antara pelanggan dan pelayan. Dalam Go, beberapa rangka kerja memudahkan pengendalian soket web, termasuk Gorilla. Walau bagaimanapun, memahami cara menghantar mesej kepada pelanggan tertentu boleh menjadi mencabar.
Persediaan Pelanggan dan Pelayan
Dalam Gorilla, pelayan mewujudkan hab untuk mengurus sambungan pelanggan. Hab termasuk peta pelanggan dan saluran untuk penyiaran mesej. Setiap pelanggan mempunyai sambungan soket web dan saluran hantar.
Mengenal pasti Pelanggan Tertentu
Untuk menghantar mesej kepada pelanggan tertentu, anda memerlukan cara untuk mengenal pasti secara unik . Biasanya, ini dilakukan dengan mencipta medan ID unik dalam struct klien.
Menghantar Mesej Tertentu
Untuk menghantar mesej kepada pelanggan tertentu, anda boleh sama ada ubah suai hab atau tulis terus ke sambungan soket web pelanggan. Mengubah suai hab memerlukan mencipta jenis mesej yang merangkumi ID dan data pelanggan sasaran. Anda kemudiannya akan menggantikan saluran siaran dengan saluran mesej dan mengubah suai hab untuk gelung sewajarnya:
<code class="go">type message struct { ID idType data []byte } func (h *Hub) run() { for { select { case client := <-h.register: h.clients[client.ID] = client case client := <-h.unregister: if _, ok := h.clients[client.ID]; ok { delete(h.clients, client.ID) close(client.send) } case message := <-h.send: if client, ok := h.clients[message.ID]; ok { select { case client.send <- message.data: default: close(client.send) delete(h.connections, client) } } } } }</code>
Menghantar mesej kepada pelanggan tertentu kemudiannya akan melibatkan:
<code class="go">hub.send <- message{ID: targetID, data: data}</code>
Sebagai alternatif, anda boleh menulis terus ke sambungan websoket pelanggan menggunakan NextWriter atau WriteMessage. Pendekatan ini memerlukan mengekalkan sambungan kepada setiap pelanggan dan memastikan tulisan berbenang tunggal pada sambungan.
Atas ialah kandungan terperinci Bagaimana untuk Menghantar Mesej Soket Web Tertentu kepada Pelanggan dalam Go (Gorilla)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!