package controllers import ( "fmt" beego "github.com/beego/beego/v2/server/web" "github.com/gorilla/websocket" "net/http" "time" ) var upgrader = websocket.Upgrader{ CheckOrigin: func(r *http.Request) bool { return true // 允许跨域连接 }, } type WebSocketController struct { beego.Controller } func (c *WebSocketController) Connect() { ws, err := upgrader.Upgrade(c.Ctx.ResponseWriter, c.Ctx.Request, nil) if err != nil { //beego.Error(err) return } defer ws.Close() for { var msg string _, _, err = ws.ReadMessage() if err != nil { // beego.Error(err) break } // 处理接收到的消息 fmt.Printf("Received: %s\n", msg) // 发送消息回客户端 err = ws.WriteMessage(websocket.TextMessage, []byte("Server: "+msg)) if err != nil { //beego.Error(err) break } time.Sleep(time.Second) // 模拟延迟 } }