Bagaimana untuk Menghantar Mesej Websocket kepada Pelanggan Tertentu dalam Go Menggunakan Gorilla?

Susan Sarandon
Lepaskan: 2024-11-03 20:17:03
asal
405 orang telah melayarinya

How to Send Websocket Messages to Specific Clients in Go Using Gorilla?

Menghantar Mesej Websocket kepada Pelanggan Tertentu dalam Go Menggunakan Gorilla

Apabila bekerja dengan websocket dalam Go menggunakan Gorilla, menghantar kemas kini kepada pelanggan individu boleh menjadi tugas yang rumit. Artikel ini menyelidiki butiran cara untuk mencapai ini dengan berkesan.

Masalahnya

Matlamatnya adalah untuk mewujudkan sambungan soket web antara pelanggan dan pelayan. Pelayan harus mendapatkan semula input daripada klien, mengambil data daripada indeks menggunakan saluran Go, dan kemudian menulis kembali data yang diindeks ke soket untuk klien tertentu. Cabarannya terletak pada mengenal pasti pelanggan secara unik dalam kod pelayan.

Kod

Kod yang disediakan dalam hub.go menguruskan sambungan klien dan termasuk peta sambungan yang pada asalnya menyimpan nilai boolean untuk setiap pelanggan. Untuk menghantar mesej kepada klien tertentu, peta ini boleh diubah suai untuk menyimpan struct sambungan sebaliknya.

<code class="go">// hub.go

// ... Existing code ...

type Hub struct {
    // Registered clients.
    clients map[*Client]bool

    // Inbound messages from the clients.
    broadcast chan []byte

    // Register requests from the clients.
    register chan *Client

    // Unregister requests from clients.
    unregister chan *Client

    connections map[string]*connection
}

// ... Existing code ...</code>
Salin selepas log masuk

Dalam client.go, medan sambungan boleh diubah suai untuk menyimpan ID unik klien.

<code class="go">// client.go

// ... Existing code ...

type Client struct {
    // unique ID for each client
    ID string

    // Hub object
    hub *Hub

    // The websocket connection.
    conn *websocket.Conn

    // Buffered channel of outbound messages.
    send chan []byte
}

// ... Existing code ...</code>
Salin selepas log masuk

Pengubahsuaian Hab

Untuk menghantar mesej kepada pelanggan tertentu, kod hub perlu diubah suai untuk memasukkan saluran hantar yang menerima mesej yang mengandungi data mesej dan ID sasaran pelanggan.

<code class="go">// hub.go

// ... Existing code ...

type Hub struct {
    // ... Existing fields ...

    // Send channel for specific clients.
    send chan message
}

// ... Existing code ...</code>
Salin selepas log masuk

Menghantar Mesej kepada Pelanggan

Mesej kini boleh dihantar kepada pelanggan tertentu menggunakan saluran hantar hab.

<code class="go">// ...
// Send a message to a client with ID "targetID".
hub.send <- message{ID: "targetID", data: messageData}
// ...</code>
Salin selepas log masuk

Kesimpulan

Dengan mengikut langkah yang digariskan di atas, adalah mungkin untuk menghantar mesej websocket kepada pelanggan tertentu apabila menggunakan Gorilla dalam Go. Walau bagaimanapun, adalah penting untuk mempertimbangkan keperluan untuk siaran sebelum melaksanakan corak ini, kerana contoh sembang yang disediakan dalam repositori Gorilla tidak sesuai untuk aplikasi tanpa keperluan siaran.

Atas ialah kandungan terperinci Bagaimana untuk Menghantar Mesej Websocket kepada Pelanggan Tertentu dalam Go Menggunakan 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!