golang.org/x/net/websocket 这个如何使用
时间: 2023-12-25 18:06:06 浏览: 176
WebSocket使用
在最新版本的 Go 中,`golang.org/x/net/websocket` 包已经被废弃,推荐使用官方提供的 `github.com/gorilla/websocket` 包来处理 WebSocket 连接。以下是一个简单示例,演示如何使用 `github.com/gorilla/websocket` 包进行 WebSocket 通信:
```go
package main
import (
"log"
"net/http"
"github.com/gorilla/websocket"
)
var upgrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
return true
},
}
func main() {
http.HandleFunc("/ws", handleWebSocket)
log.Fatal(http.ListenAndServe(":8080", nil))
}
func handleWebSocket(w http.ResponseWriter, r *http.Request) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Println("WebSocket 连接升级失败:", err)
return
}
defer conn.Close()
for {
// 读取消息
_, msg, err := conn.ReadMessage()
if err != nil {
log.Println("WebSocket 读取消息失败:", err)
break
}
log.Printf("收到 WebSocket 消息:%s\n", msg)
// 处理消息
// ...
// 发送响应
err = conn.WriteMessage(websocket.TextMessage, []byte("收到消息"))
if err != nil {
log.Println("WebSocket 发送响应失败:", err)
break
}
}
}
```
在上述示例中,我们首先创建了一个 `websocket.Upgrader` 对象,并设置了其中的 `CheckOrigin` 函数以允许跨域请求。然后我们定义了一个 `handleWebSocket` 函数,用于处理 WebSocket 连接。
在 `handleWebSocket` 函数中,我们通过 `upgrader.Upgrade` 方法将 HTTP 连接升级为 WebSocket 连接。然后,我们进入一个循环来处理收到的消息。您可以在循环中添加您自己的消息处理逻辑,并通过 `conn.WriteMessage` 方法发送响应。
请注意,这只是一个简单的示例,您可能需要根据您的实际需求进行适当的配置和错误处理。
希望以上信息对您有所帮助!如果您还有其他问题,请随时提问。
阅读全文