Go (Gorilla) で対象の Websocket アップデートを特定のクライアントに送信する方法

Susan Sarandon
リリース: 2024-11-04 12:02:02
オリジナル
148 人が閲覧しました

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

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!