Heim > Artikel > Backend-Entwicklung > Wie erhalte ich Go WebSocket-Nachrichten?
Die Methode zum Empfangen von WebSocket-Nachrichten in Go hängt von der Client- und Serverseite ab: Client: Verwenden Sie die ReadMessage-Funktion, um die Nachricht zu lesen und den Nachrichtentyp, die Nutzlast und den Fehler zurückzugeben. Server: Liest die ReadMessage-Methode des verbundenen Clients, die auch den Nachrichtentyp, die Nutzlast und den Fehler zurückgibt.
WebSocket ist ein Vollduplex-Kommunikationsprotokoll, das es Client und Server ermöglicht, nach dem Aufbau einer einzigen Verbindung in beide Richtungen zu kommunizieren. In diesem Artikel wird erläutert, wie Sie WebSocket-Nachrichten in Go empfangen.
Auf dem Client können Sie Nachrichten über die Funktion ReadMessage
empfangen: 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
Die Funktion gibt drei Werte zurück: Nachrichtentyp (mt
), die Nachrichtennutzlast (r
) und ein Fehler (err
). Der Nachrichtentyp ist ein ganzzahliger Wert, der den Nachrichtentyp angibt (Text, Binär usw.). Der Server empfängt die NachrichtAuf der Serverseite können Sie die Nachricht über die ReadMessage
-Methode der Clientverbindung empfangen: 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) } }Praktischer Fall🎜🎜Das Folgende ist eine Methode, die WebSocket empfängt Nachrichten und gibt sie an die Konsole aus. Go-Client-Beispiel: 🎜
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 } // 将消息保存到数据库... } }🎜Ebenso ist hier ein Beispiel für einen Go-Server, der WebSocket-Nachrichten empfängt und in einer Datenbank speichert: 🎜rrreee
Das obige ist der detaillierte Inhalt vonWie erhalte ich Go WebSocket-Nachrichten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!