Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menghantar Kemas Kini Websocket Sasaran kepada Pelanggan Tertentu dalam Go (Gorilla)?

Bagaimana untuk Menghantar Kemas Kini Websocket Sasaran kepada Pelanggan Tertentu dalam Go (Gorilla)?

Susan Sarandon
Susan Sarandonasal
2024-11-04 12:02:02149semak imbas

How to Send Targeted Websocket Updates to Specific Clients in Go (Gorilla)?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn