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

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

Susan Sarandon
Susan Sarandon原創
2024-11-04 12:02:02201瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn