Go で特定のクライアントに WebSocket 更新を送信する (Gorilla)
Go の初心者であるにもかかわらず、WebSocket 通信の実装に関するガイダンスを求めています。先行入力プロジェクト。 Gorilla の GitHub リポジトリの例を活用しようとしましたが、特定のクライアントをどのように識別して WebSocket 更新の対象にするかを理解する際に課題に直面しました。
クライアントを一意に識別するには、Gorilla ハブとクライアントの構造体を変更して、 IDフィールド。このフィールドは、int や string などのタイプにすることができます。
ハブ構造体内で、この ID タイプをキーとして使用し、接続オブジェクトを値として使用するマップで接続マップを置き換えます。
<code class="go">connections map[idType]*connection</code>
さらに、メッセージ データとターゲット クライアント 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 中国語 Web サイトの他の関連記事を参照してください。