ws_controller.go 873 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package controllers
  2. import (
  3. "fmt"
  4. beego "github.com/beego/beego/v2/server/web"
  5. "github.com/gorilla/websocket"
  6. "net/http"
  7. "time"
  8. )
  9. var upgrader = websocket.Upgrader{
  10. CheckOrigin: func(r *http.Request) bool {
  11. return true // 允许跨域连接
  12. },
  13. }
  14. type WebSocketController struct {
  15. beego.Controller
  16. }
  17. func (c *WebSocketController) Connect() {
  18. ws, err := upgrader.Upgrade(c.Ctx.ResponseWriter, c.Ctx.Request, nil)
  19. if err != nil {
  20. //beego.Error(err)
  21. return
  22. }
  23. defer ws.Close()
  24. for {
  25. var msg string
  26. _, _, err = ws.ReadMessage()
  27. if err != nil {
  28. // beego.Error(err)
  29. break
  30. }
  31. // 处理接收到的消息
  32. fmt.Printf("Received: %s\n", msg)
  33. // 发送消息回客户端
  34. err = ws.WriteMessage(websocket.TextMessage, []byte("Server: "+msg))
  35. if err != nil {
  36. //beego.Error(err)
  37. break
  38. }
  39. time.Sleep(time.Second) // 模拟延迟
  40. }
  41. }