1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- 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) // 模拟延迟
- }
- }
|