ホームページ  >  記事  >  バックエンド開発  >  Go (Gorilla) で対象の Websocket アップデートを特定のクライアントに送信する方法

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

Susan Sarandon
Susan Sarandonオリジナル
2024-11-04 12:02:02149ブラウズ

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。