class WebSocket::Driver::Hybi
def parse(data)
def parse(data) data = data.bytes.to_a if data.respond_to?(:bytes) @reader.put(data) buffer = true while buffer case @stage when 0 then buffer = @reader.read(1) parse_opcode(buffer[0]) if buffer when 1 then buffer = @reader.read(1) parse_length(buffer[0]) if buffer when 2 then buffer = @reader.read(@length_size) parse_extended_length(buffer) if buffer when 3 then buffer = @reader.read(4) if buffer @mask = buffer @stage = 4 end when 4 then buffer = @reader.read(@length) if buffer @payload = buffer emit_frame @stage = 0 end end end end