go websocket ReadJSON
时间: 2023-10-01 14:12:36 浏览: 77
在 Go 中,读取 WebSocket 的 JSON 消息可以通过以下步骤完成:
1. 首先,创建一个结构体来存储您要读取的 JSON 消息。例如:
```
type Message struct {
Sender string `json:"sender"`
Recipient string `json:"recipient"`
Content string `json:"content"`
}
```
2. 接下来,使用`github.com/gorilla/websocket`包中的`websocket.Conn`类型来创建一个 WebSocket 连接。例如:
```
conn, err := websocket.Dial(url, "", origin)
if err != nil {
log.Fatal(err)
}
defer conn.Close()
```
3. 然后,使用`websocket.JSON.Receive()`方法从 WebSocket 连接中读取 JSON 消息,并将其解码到我们定义的结构体中。例如:
```
msg := &Message{}
err := conn.ReadJSON(msg)
if err != nil {
log.Fatal(err)
}
```
4. 最后,您可以访问解码后的 JSON 消息的字段。例如,要访问消息的内容,可以使用`msg.Content`。
下面是完整的示例代码:
```
package main
import (
"log"
"github.com/gorilla/websocket"
)
type Message struct {
Sender string `json:"sender"`
Recipient string `json:"recipient"`
Content string `json:"content"`
}
func main() {
url := "wss://example.com/ws"
origin := "https://example.com"
conn, err := websocket.Dial(url, "", origin)
if err != nil {
log.Fatal(err)
}
defer conn.Close()
msg := &Message{}
err = conn.ReadJSON(msg)
if err != nil {
log.Fatal(err)
}
log.Printf("Received message from %s to %s: %s", msg.Sender, msg.Recipient, msg.Content)
}
```
阅读全文