websocket.go 691 B

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