package ws import ( "visiona-local/server/internal/inference" "github.com/gin-gonic/gin" "github.com/gorilla/websocket" ) func InferenceHandler(hub *Hub, inferenceSvc *inference.Service) gin.HandlerFunc { return func(c *gin.Context) { deviceID := c.Param("id") conn, err := upgrader.Upgrade(c.Writer, c.Request, nil) if err != nil { return } defer conn.Close() client := &Client{Conn: conn, Send: make(chan []byte, 20)} room := "inference:" + deviceID sub := &Subscription{Client: client, Room: room} hub.Register(sub) defer hub.Unregister(sub) for msg := range client.Send { if err := conn.WriteMessage(websocket.TextMessage, msg); err != nil { return } } } }