Hello, My ws server crash. I couldn't find the problem Can you help me?
here my ws server code:
func wsServer() {
var connList = make(map[string]*websocket.Conn)
upgrader.CheckOrigin = func(r *http.Request) bool { return true }
router.GET("/ws", func(c *gin.Context) {
var mu = sync.RWMutex{}
conn, err := upgrader.Upgrade(c.Writer, c.Request, nil)
if err != nil {
fmt.Println(err.Error())
return
}
if _, ok := connList[c.Query("token")]; ok {
connList[c.Query("token")].Close()
}
mu.Lock()
connList[c.Query("token")] = conn
mu.Unlock()
defer func() {
fmt.Println("kapanıyomm")
if err := conn.Close(); err != nil {
fmt.Println("Connection close error:", err)
}
mu.Lock()
delete(connList, c.Query("token"))
mu.Unlock()
}()
for {
select {
case <-time.After(2 * time.Second):
mu.RLock()
for _, conn := range connList {
if conn.WriteMessage(websocket.TextMessage, []byte("ping")); err != nil {
fmt.Println("PingMessage error:", err)
conn.Close()
return
}
}
mu.RUnlock()
case data, _ := <-websocketHub.Listen():
fmt.Println("ok")
marshal, err := json.Marshal(data)
if err != nil {
}
mu.RLock()
for _, conn := range connList {
if err := conn.WriteMessage(websocket.TextMessage, marshal); err != nil {
fmt.Println("WriteMessage error:", err)
}
}
mu.RUnlock()
}
}
})
fmt.Println(router.Run(":81"))
}
i attach the errors
thanks