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