You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
723 B

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
}
}
}