class WebSocket::Driver::Draft75
def parse(chunk)
def parse(chunk) return if @ready_state > 1 @reader.put(chunk) @reader.each_byte do |octet| case @stage when -1 then @body << octet send_handshake_body when 0 then parse_leading_byte(octet) when 1 then @length = (octet & 0x7F) + 128 * @length if @closing and @length.zero? return close elsif (octet & 0x80) != 0x80 if @length.zero? @stage = 0 else @skipped = 0 @stage = 2 end end when 2 then if octet == 0xFF @stage = 0 emit(:message, MessageEvent.new(Driver.encode(@buffer, Encoding::UTF_8))) else if @length @skipped += 1 @stage = 0 if @skipped == @length else @buffer << octet return close if @buffer.size > @max_length end end end end end