ホームページ  >  記事  >  バックエンド開発  >  Gorilla を使用して Go で特定のクライアントに Websocket メッセージを送信する方法

Gorilla を使用して Go で特定のクライアントに Websocket メッセージを送信する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-11-03 20:17:03421ブラウズ

How to Send Websocket Messages to Specific Clients in Go Using Gorilla?

Gorilla を使用して Go で WebSocket メッセージを特定のクライアントに送信する

Gorilla を使用して Go で WebSocket を操作する場合、個々のクライアントに更新を送信するのは複雑なタスクになる可能性があります。この記事では、これを効果的に実現する方法について詳しく説明します。

問題

目標は、クライアントとサーバーの間に WebSocket 接続を確立することです。サーバーはクライアントから入力を取得し、Go チャネルを使用してインデックスからデータをフェッチし、インデックス付きデータを特定のクライアントのソケットに書き戻す必要があります。課題は、サーバー コード内でクライアントを一意に識別することにあります。

コード

hub.go で提供されるコードは、クライアント接続を管理し、元々それぞれのブール値を格納した接続マップを含んでいます。クライアント。特定のクライアントにメッセージを送信するには、代わりに接続構造体を保存するようにこのマップを変更できます。

<code class="go">// hub.go

// ... Existing code ...

type Hub struct {
    // Registered clients.
    clients map[*Client]bool

    // Inbound messages from the clients.
    broadcast chan []byte

    // Register requests from the clients.
    register chan *Client

    // Unregister requests from clients.
    unregister chan *Client

    connections map[string]*connection
}

// ... Existing code ...</code>

client.go では、クライアントの一意の ID を保存するように接続フィールドを変更できます。

<code class="go">// client.go

// ... Existing code ...

type Client struct {
    // unique ID for each client
    ID string

    // Hub object
    hub *Hub

    // The websocket connection.
    conn *websocket.Conn

    // Buffered channel of outbound messages.
    send chan []byte
}

// ... Existing code ...</code>

ハブの変更

特定のクライアントにメッセージを送信するには、メッセージ データとターゲットの ID を含むメッセージを受け入れる送信チャネルを含めるようにハブ コードを変更する必要があります。 client.

<code class="go">// hub.go

// ... Existing code ...

type Hub struct {
    // ... Existing fields ...

    // Send channel for specific clients.
    send chan message
}

// ... Existing code ...</code>

クライアントへのメッセージの送信

ハブの送信チャネルを使用して、特定のクライアントにメッセージを送信できるようになりました。

<code class="go">// ...
// Send a message to a client with ID "targetID".
hub.send <- message{ID: "targetID", data: messageData}
// ...</code>

結論

Go で Gorilla を使用している場合、上記の手順に従うことで、特定のクライアントに WebSocket メッセージを送信することができます。ただし、Gorilla のリポジトリで提供されているチャットの例はブロードキャスト要件のないアプリケーションには適していないため、このパターンを実装する前にブロードキャストの必要性を検討することが重要です。

以上がGorilla を使用して Go で特定のクライアントに Websocket メッセージを送信する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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