slowwildwshandler.go 747 B

123456789101112131415161718192021222324252627282930313233
  1. package handler
  2. import (
  3. "net/http"
  4. "slowwildws/internal/logic"
  5. "slowwildws/internal/svc"
  6. "github.com/gorilla/websocket"
  7. xhttp "github.com/zeromicro/x/http"
  8. )
  9. func SlowwildwsHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
  10. return func(w http.ResponseWriter, r *http.Request) {
  11. var responseHeader http.Header
  12. if protocol := r.Header.Get("Sec-Websocket-Protocol"); protocol != "" {
  13. responseHeader = http.Header{
  14. "Sec-Websocket-Protocol": []string{protocol},
  15. }
  16. }
  17. upgrade := websocket.Upgrader{}
  18. conn, err := upgrade.Upgrade(w, r, responseHeader)
  19. if err != nil {
  20. xhttp.JsonBaseResponseCtx(r.Context(), w, err)
  21. return
  22. }
  23. l := logic.NewConnectionLogic(r.Context(), svcCtx, conn)
  24. go l.Keepalive()
  25. }
  26. }