Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menghantar Mesej Websocket kepada Pelanggan Tertentu dalam Go Menggunakan Gorilla?

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

Susan Sarandon
Susan Sarandonasal
2024-11-03 20:17:03421semak imbas

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>

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>

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>

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>

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!

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