首頁 > 後端開發 > Golang > 如何使用 Gorilla 在 Go 中向特定客戶端發送 Websocket 訊息?

如何使用 Gorilla 在 Go 中向特定客戶端發送 Websocket 訊息?

Susan Sarandon
發布: 2024-11-03 20:17:03
原創
531 人瀏覽過

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

使用Gorilla 在Go 中向特定客戶端發送Websocket 訊息

使用Gorilla 在Go 中使用Websocket 時,向單一客戶端發送更新可能是一項複雜的任務。本文深入探討如何有效實現這一目標的細節。

問題

目標是在客戶端和伺服器之間建立 Websocket 連線。伺服器應該檢索來自客戶端的輸入,使用 Go 通道從索引中獲取數據,然後將索引資料寫回特定客戶端的套接字。挑戰在於伺服器程式碼中唯一標識客戶端。

程式碼

hub.go 中提供的程式碼管理用戶端連接,並包含一個連接映射,該映射最初為每個連接儲存了一個布林值客戶。若要向特定用戶端傳送訊息,可以修改此對應以儲存連線結構。

<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>
登入後複製

在 client.go 中,可以修改連線欄位以儲存客戶端的唯一 ID。

<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>
登入後複製

Hub 修改

要向特定客戶端發送訊息,需要修改 Hub 程式碼以包含一個發送通道,該通道接受包含訊息資料和目標 ID 的訊息用戶端。

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

// ... Existing code ...

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

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

// ... Existing code ...</code>
登入後複製

傳送訊息給客戶端

現在可以使用中心的傳送通道將訊息傳送給特定客戶端。

<code class="go">// ...
// Send a message to a client with ID "targetID".
hub.send <- message{ID: "targetID", data: messageData}
// ...</code>
登入後複製

結論

依照上述步驟,在 Go 中使用 Gorilla 時可以向特定客戶端發送 websocket 訊息。然而,在實現此模式之前考慮廣播的需求至關重要,因為 Gorilla 儲存庫中提供的聊天範例不適合沒有廣播需求的應用程式。

以上是如何使用 Gorilla 在 Go 中向特定客戶端發送 Websocket 訊息?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板