package main
import (
"log"
"net/http"
"github.com/gorilla/websocket"
)
func main() {
// 定义处理 WebSocket 连接的路由
http.HandleFunc("/ws", handleConnections)
// 启动 HTTP 服务器,监听 8080 端口
log.Fatal(http.ListenAndServe(":8080", nil))
}
func handleConnections(w http.ResponseWriter, r *http.Request) {
// 升级到 WebSocket 连接
upgrader := websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool { return true },
}
conn, err := upgrader.Upgrade(w, r, nil)
if err!= nil {
log.Println("升级到 WebSocket 时出错:", err)
return
}
defer conn.Close()
// 持续读取和发送消息
for {
// 读取消息
messageType, message, err := conn.ReadMessage()
if err!= nil {
log.Println("读取消息时出错:", err)
return
}
// 打印接收到的消息
log.Printf("接收到消息: %s", message)
// 发送响应消息
err = conn.WriteMessage(messageType, []byte("服务器收到了你的消息: "+string(message)))
if err!= nil {
log.Println("发送消息时出错:", err)
return
}
}
}
在上述代码中:
- 首先定义了一个
/ws
的路由处理函数handleConnections
。 - 使用
websocket.Upgrader
将 HTTP 连接升级为 WebSocket 连接。 - 在一个循环中,不断读取客户端发送的消息,并发送响应消息。
这只是一个简单的 WebSocket 示例,实际应用中可能会涉及更复杂的逻辑和错误处理。