package server import ( "context" "fmt" "log" "time" "artNet/models" "github.com/coder/websocket" "github.com/coder/websocket/wsjson" "github.com/gin-gonic/gin" ) const ( OnCreate = "onCreate" OnChange = "onChange" OnDelete = "onDelete" ) func (s *Server) handleWebSocket(c *gin.Context) { conn, err := websocket.Accept(c.Writer, c.Request, &websocket.AcceptOptions{ OriginPatterns: []string{"*"}, }) if err != nil { log.Println("Upgrade error:", err) return } defer conn.Close(websocket.StatusInternalError, "Internal error") ctx, cancel := context.WithTimeout(c.Request.Context(), 10*time.Minute) defer cancel() s.Subscribers.Connect(conn) //Read loop for { var request models.JsonData err := wsjson.Read(ctx, conn, &request) if err != nil { fmt.Println(s.Subscribers[conn]) log.Println("WebSocket read error:", err) s.Subscribers.Disconnect(conn) fmt.Println(s.Subscribers[conn]) break } // Set // if request.Set != nil { // for _, set := range *request.Set { // err = s.Unsubscribe(unsub, conn) // if err != nil { // fmt.Println(err) // break // } // } // } if err != nil { break } } }