init.go 875 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package websocket
  2. import (
  3. "context"
  4. "github.com/gogf/gf/v2/frame/g"
  5. "github.com/gogf/gf/v2/net/ghttp"
  6. "github.com/gogf/gf/v2/os/gtime"
  7. "github.com/gorilla/websocket"
  8. "net/http"
  9. )
  10. var (
  11. clientManager = NewClientManager() // 管理者
  12. )
  13. var upGrader = websocket.Upgrader{
  14. ReadBufferSize: 1024,
  15. WriteBufferSize: 1024,
  16. CheckOrigin: func(r *http.Request) bool {
  17. return true
  18. },
  19. }
  20. func StartWebSocket(ctx context.Context) {
  21. g.Log().Info(ctx, "启动:WebSocket")
  22. go clientManager.start()
  23. go clientManager.ping(ctx)
  24. }
  25. func WsPage(r *ghttp.Request) {
  26. conn, err := upGrader.Upgrade(r.Response.ResponseWriter, r.Request, nil)
  27. if err != nil {
  28. return
  29. }
  30. currentTime := uint64(gtime.Now().Unix())
  31. client := NewClient(conn.RemoteAddr().String(), conn, currentTime)
  32. go client.read()
  33. go client.write()
  34. // 用户连接事件
  35. clientManager.Register <- client
  36. }