code: func NewReader(r io.Reader, ping bool, protocols map[string]ReaderProtocolConfig) *Reader {
  	return &Reader{
  		r:           r,
  		err:         make(chan error),
  		ping:        ping,
  		protocols:   protocols,
  		handleCrash: func() { runtime.HandleCrash() },
  	}
  }
docs: // NewReader creates a WebSocket pipe that will copy the contents of r to a provided
  // WebSocket connection. If ping is true, a zero length message will be sent to the client
  // before the stream begins reading.
  //
  // The protocols parameter maps subprotocol names to StreamProtocols. The empty string
  // subprotocol name is used if websocket.Config.Protocol is empty.