Menghantar Kemas Kini Websocket kepada Pelanggan Tertentu dalam Go (Gorilla)
Walaupun menjadi orang baru dalam Go, anda mendapatkan panduan tentang melaksanakan komunikasi soket web untuk projek kepala taip anda. Anda telah mencuba memanfaatkan contoh daripada repositori GitHub Gorilla tetapi menghadapi cabaran dalam memahami cara pelanggan tertentu boleh dikenal pasti dan disasarkan untuk kemas kini soket web.
Untuk mengenal pasti pelanggan secara unik, anda perlu mengubah suai hab Gorilla dan struct klien untuk memasukkan medan ID. Medan ini boleh daripada jenis seperti int atau rentetan.
Dalam struct Hub, gantikan peta sambungan dengan peta yang menggunakan jenis ID ini sebagai kunci dan objek sambungan sebagai nilai:
<code class="go">connections map[idType]*connection</code>
Selain itu, tukar medan siaran dalam struct Hub untuk menggunakan jenis mesej tersuai yang mengandungi kedua-dua data mesej dan ID klien sasaran:
<code class="go">send chan message</code>
Ganti gelung for yang bertanggungjawab untuk menghantar mesej siaran dengan kod berikut untuk menghantar mesej kepada pelanggan tertentu:
<code class="go">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>
Untuk menghantar mesej kepada pelanggan tertentu, cipta mesej yang menyatakan ID pelanggan sasaran:
<code class="go">hub.send <- message{ID: targetID, data: msg}</code>
Dengan melaksanakan pengubahsuaian ini, anda kini boleh menghantar kemas kini soket web yang disasarkan kepada pelanggan tertentu dalam aplikasi Go anda.
Atas ialah kandungan terperinci Bagaimana untuk Menghantar Kemas Kini Websocket Sasaran kepada Pelanggan Tertentu dalam Go (Gorilla)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!