首頁 > 後端開發 > Golang > 如何在 Go (Gorilla) 中向特定客戶端發送有針對性的 Websocket 更新?

如何在 Go (Gorilla) 中向特定客戶端發送有針對性的 Websocket 更新?

Susan Sarandon
發布: 2024-11-04 12:02:02
原創
220 人瀏覽過

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

在Go (Gorilla) 中向特定客戶端發送Websocket 更新

儘管是Go 新手,但您仍尋求有關實現Websocket 通信的指導您的預輸入項目。您已嘗試利用 Gorilla GitHub 儲存庫中的範例,但在理解如何識別特定客戶端並針對 Websocket 更新進行定位方面遇到了挑戰。

要唯一地識別客戶端,您需要修改 Gorilla hub 和客戶端結構以包含身分證號欄位。該欄位可以是 int 或 string 等類型。

在Hub 結構體中,將連接映射替換為使用此ID 類型作為鍵、連接對像作為值的映射:

<code class="go">connections map[idType]*connection</code>
登入後複製

此外,更改Hub 結構中的廣播字段以使用包含訊息資料和目標用戶端ID 的自訂訊息類型:

<code class="go">send chan message</code>
登入後複製

取代負責傳送廣播訊息的for 迴圈使用以下程式碼將訊息傳送到特定用戶端:

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

要向特定客戶端發送訊息,請建立一條指定目標客戶端ID 的訊息:

<code class="go">hub.send <- message{ID: targetID, data: msg}</code>
登入後複製

透過實現這些修改,您現在可以在Go 應用程式中向特定客戶端發送有針對性的Websocket 更新。

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

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