Go で WebSocket メッセージを受信する方法は、クライアント側とサーバー側によって異なります。 クライアント: ReadMessage 関数を使用してメッセージを読み取り、メッセージ タイプ、ペイロード、エラーを返します。サーバー: 接続されたクライアントの ReadMessage メソッドを読み取ります。このメソッドは、メッセージ タイプ、ペイロード、エラーも返します。
WebSocket は、単一の接続を確立した後、クライアントとサーバーが双方向で通信できるようにする全二重通信プロトコルです。この記事では、Go で WebSocket メッセージを受信する方法について説明します。
クライアントでは、ReadMessage
関数を通じてメッセージを受信できます: ReadMessage
函数接收消息:
import "github.com/gorilla/websocket" type Message struct { Type int Payload []byte } func readMessage(conn *websocket.Conn) (*Message, error) { mt, r, err := conn.ReadMessage() if err != nil { return nil, err } return &Message{ Type: mt, Payload: r, }, nil }
ReadMessage
函数返回三个值:消息类型 (mt
)、消息负载 (r
) 和一个错误 (err
)。消息类型是一个整数值,表示消息的类型(文本、二进制等)。
在服务器端,可以通过客户端连接的 ReadMessage
func (c *Client) readMessage() (*Message, error) { mt, r, err := c.conn.ReadMessage() if err != nil { return nil, err } return &Message{ Type: mt, Payload: r, }, nil }
ReadMessage
この関数は 3 つの値を返します: メッセージ タイプ (mt
)、メッセージ ペイロード (r
)、およびエラー (err
)。メッセージ タイプは、メッセージのタイプ (テキスト、バイナリなど) を示す整数値です。 サーバーはメッセージを受信しますサーバー側では、クライアント接続の ReadMessage
メソッドを通じてメッセージを受信できます: package main import ( "fmt" "log" "github.com/gorilla/websocket" ) func main() { conn, _, err := websocket.DefaultDialer.Dial("ws://example.com/ws", nil) if err != nil { log.Fatal("dial:", err) } defer conn.Close() for { _, message, err := conn.ReadMessage() if err != nil { if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseAbnormalClosure) { log.Fatal("unexpected close:", err) } continue } fmt.Printf("received: %s\n", message) } }
package main import ( "database/sql" "fmt" "log" "github.com/gorilla/websocket" ) func main() { // 数据库设置... conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Fatal("upgrade:", err) } defer conn.Close() for { _, message, err := conn.ReadMessage() if err != nil { if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseAbnormalClosure) { log.Fatal("unexpected close:", err) } continue } // 将消息保存到数据库... } }
以上がGo WebSocket メッセージを受信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。