# File lib/capybara/poltergeist/web_socket_server.rb, line 127
    def receive
      start = Time.now

      until handler.message?
        raise Errno::EWOULDBLOCK if (Time.now - start) >= timeout
        IO.select([socket], [], [], timeout) or raise Errno::EWOULDBLOCK
        data = socket.recv(RECV_SIZE)
        break if data.empty?
        handler.parse(data)
      end

      handler.next_message
    end