Rumah > pembangunan bahagian belakang > Golang > 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
Lepaskan: 2024-11-04 12:02:02
asal
200 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

Untuk menghantar mesej kepada pelanggan tertentu, cipta mesej yang menyatakan ID pelanggan sasaran:

<code class="go">hub.send <- message{ID: targetID, data: msg}</code>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan