code: func (s *Server) wsConnHandler(ws *websocket.Conn) {
  	c, err := NewConn()
  	if err != nil {
  		log.Printf("server: error while accepting connection: %v", err)
  		return
  	}
  	defer recoverAndLog(c, &s.wg)
  	c.MiddlewareFunc(s.middleware...)
  
  	log.Printf("server: client connected %v: %v", c.ID, ws.RemoteAddr())
  
  	s.conns.Set(c.ID, c)
  	connsCounter.Add(1)
  	c.setConn(ws)
  	c.startReceive()
  	s.conns.Delete(c.ID)
  	connsCounter.Add(-1)
  	s.disconnHandler(c)
  }
docs: // wsHandler handles incoming websocket connections.