Go でクライアントに特定の Websocket メッセージを送信する (Gorilla を使用)
Websocket は、低遅延通信のための接続指向プロトコルを提供しますクライアントとサーバーの間。 Go では、Gorilla を含むいくつかのフレームワークが WebSocket の処理を簡素化します。ただし、特定のクライアントにメッセージを送信する方法を理解するのは難しい場合があります。
クライアントとサーバーのセットアップ
Gorilla では、サーバーはクライアント接続を管理するためのハブを確立します。ハブには、メッセージをブロードキャストするためのクライアントとチャネルのマップが含まれています。各クライアントには WebSocket 接続と送信チャネルがあります。
特定のクライアントの識別
特定のクライアントにメッセージを送信するには、メッセージを一意に識別する方法が必要です。 。通常、これはクライアント構造体に一意の ID フィールドを作成することによって行われます。
特定のメッセージの送信
特定のクライアントにメッセージを送信するには、次のいずれかを実行できます。ハブを変更するか、クライアントの WebSocket 接続に直接書き込みます。ハブを変更するには、ターゲットのクライアント ID とデータを含むメッセージ タイプを作成する必要があります。次に、ブロードキャスト チャネルをメッセージ チャネルに置き換え、それに応じてハブの for ループを変更します。
type message struct {
ID idType
data []byte
}
func (h *Hub) run() {
for {
select {
case client := 特定のクライアントにメッセージを送信するには、次のようになります:
hub.send あるいは、 NextWriter または WriteMessage を使用して、クライアントの WebSocket 接続に直接書き込むことができます。このアプローチでは、各クライアントへの接続を維持し、接続へのシングルスレッド書き込みを保証する必要があります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3