class Playwright::WebSocketClient

def close(code: 1000, reason: "")

def close(code: 1000, reason: "")
  return if @ready_state >= STATE_CLOSING
  @ready_state = STATE_CLOSING
  @driver.close(reason, code)
end

def handle_on_close(reason:, code:)

def handle_on_close(reason:, code:)
ose&.call(reason, code)
disconnect

def handle_on_error(error_message:)

def handle_on_error(error_message:)
 false if @on_error.nil?
ror.call(error_message)

def handle_on_message(data)

def handle_on_message(data)
 if @ready_state != STATE_OPENED
ssage&.call(data)

def handle_on_open

def handle_on_open
en&.call

def initialize(url:, max_payload_size:)

def initialize(url:, max_payload_size:)
  @impl = DriverImpl.new(url)
  @driver = ::WebSocket::Driver.client(@impl, max_length: max_payload_size)
  setup
end

def on_close(&block)

Parameters:
  • block (Proc(reason: String, code: Numeric)) --
def on_close(&block)
  @on_close = block
end

def on_error(&block)

Parameters:
  • block (Proc(error_message: String)) --
def on_error(&block)
  @on_error = block
end

def on_message(&block)

def on_message(&block)
  @on_message = block
end

def on_open(&block)

def on_open(&block)
  @on_open = block
end

def send_text(message)

Parameters:
  • message (String) --
def send_text(message)
  return if @ready_state >= STATE_CLOSING
  @driver.text(message)
end

def setup

def setup
_state = STATE_CONNECTING
r.on(:open) do
dy_state = STATE_OPENED
le_on_open
r.on(:close) do |event|
dy_state = STATE_CLOSED
le_on_close(reason: event.reason, code: event.code)
r.on(:error) do |event|
handle_on_error(error_message: event.message)
ise TransportError.new(event.message)
r.on(:message) do |event|
le_on_message(event.data)

def start

def start
  @driver.start
  Thread.new do
    wait_for_data until @ready_state >= STATE_CLOSING
  rescue EOFError
    # Google Chrome was gone.
    # We have nothing todo. Just finish polling.
    if @ready_state < STATE_CLOSING
      handle_on_close(reason: 'Going Away', code: 1001)
    end
  end
end

def wait_for_data

def wait_for_data
r.parse(@impl.readpartial)