websocket.go 619 B

123456789101112131415161718192021222324252627282930313233343536
  1. package httpservers
  2. import (
  3. "time"
  4. log "github.com/sirupsen/logrus"
  5. "net/http"
  6. "nhooyr.io/websocket"
  7. )
  8. func handleWebsocket(w http.ResponseWriter, r *http.Request) {
  9. c, err := websocket.Accept(w, r, nil)
  10. if err != nil {
  11. Log.Warnf("Websocket issue: %v", err)
  12. return
  13. }
  14. defer c.Close(websocket.StatusInternalError, "Goodbye")
  15. ctx, cancel := context.WithTimeout(r.Context(), time.Second*10)
  16. defer cancel()
  17. var v interface{}
  18. err = wsjson.Read(Ctx, c, v)
  19. if err != nil {
  20. Log.Warnf("Websocket issue: %v", err)
  21. return
  22. }
  23. log.Printf("recv: %v", v)
  24. c.Close(websocket.StatusNormalClosure, "")
  25. }