func (c *client) NextReader() (*parser.PacketDecoder, error) { var reader io.Reader for { t, r, err := c.conn.NextReader() if err != nil { return nil, err } switch t { case websocket.TextMessage: fallthrough case websocket.BinaryMessage: reader = r return parser.NewDecoder(reader) } } }
func (s *Server) serveHTTP(w http.ResponseWriter, r *http.Request) { defer s.callback.OnClose(s) for { t, r, err := s.conn.NextReader() if err != nil { s.conn.Close() return } switch t { case websocket.TextMessage: fallthrough case websocket.BinaryMessage: decoder, err := parser.NewDecoder(r) if err != nil { return } s.callback.OnPacket(decoder) decoder.Close() } } }