package ws import ( "github.com/gin-gonic/gin" "github.com/gorilla/websocket" "log" "net/http" "sync" "time" ) type Ws struct { } var users sync.Map func init() { users = sync.Map{} } var upGrader = websocket.Upgrader{ CheckOrigin: func(r *http.Request) bool { return true }, } // @Title websocket func (w *Ws) Ws(c *gin.Context) { ws, err := upGrader.Upgrade(c.Writer, c.Request, nil) if err != nil { return } defer ws.Close() id := time.Now().UnixNano() users.Store(id, ws) defer func() { users.Delete(id) }() for { mt, message, err := ws.ReadMessage() if err != nil { return } log.Println(c.IsWebsocket()) if err := ws.WriteMessage(mt, message); err != nil { break } } }