code: func (s *Server) handleConnection(w http.ResponseWriter, r *http.Request, websocketConn UnderlineConnection) *connection {
  	// use the config's id generator (or the default) to create a websocket client/connection id
  	cid := s.config.IDGenerator(w, r)
  	// create the new connection
  	c := newConnection(r, s, websocketConn, cid)
  	// add the connection to the Server's list
  	s.addConnection(c)
  
  	// join to itself
  	s.Join(c.id, c.id)
  
  	return c
  }
docs: // wrapConnection wraps an underline connection to a *connection.
  // It does NOT starts its writer, reader and event mux, the caller is responsible for that.