class Playwright::WebSocketClient

Constants

STATE_CLOSED
STATE_CLOSING
STATE_CONNECTING
STATE_OPENED

Public Class Methods

new(url:, max_payload_size:) click to toggle source
# File lib/playwright/web_socket_client.rb, line 65
def initialize(url:, max_payload_size:)
  @impl = DriverImpl.new(url)
  @driver = ::WebSocket::Driver.client(@impl, max_length: max_payload_size)

  setup
end

Public Instance Methods

close(code: 1000, reason: "") click to toggle source
# File lib/playwright/web_socket_client.rb, line 118
def close(code: 1000, reason: "")
  return if @ready_state >= STATE_CLOSING
  @ready_state = STATE_CLOSING
  @driver.close(reason, code)
end
on_close(&block) click to toggle source

@param block [Proc(reason: String, code: Numeric)]

# File lib/playwright/web_socket_client.rb, line 129
def on_close(&block)
  @on_close = block
end
on_error(&block) click to toggle source

@param block [Proc(error_message: String)]

# File lib/playwright/web_socket_client.rb, line 134
def on_error(&block)
  @on_error = block
end
on_message(&block) click to toggle source
# File lib/playwright/web_socket_client.rb, line 138
def on_message(&block)
  @on_message = block
end
on_open(&block) click to toggle source
# File lib/playwright/web_socket_client.rb, line 124
def on_open(&block)
  @on_open = block
end
send_text(message) click to toggle source

@param message [String]

# File lib/playwright/web_socket_client.rb, line 113
def send_text(message)
  return if @ready_state >= STATE_CLOSING
  @driver.text(message)
end
start() click to toggle source
# File lib/playwright/web_socket_client.rb, line 98
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

Private Instance Methods

handle_on_close(reason:, code:) click to toggle source
# File lib/playwright/web_socket_client.rb, line 146
        def handle_on_close(reason:, code:)
  @on_close&.call(reason, code)
  @impl.disconnect
end
handle_on_error(error_message:) click to toggle source
# File lib/playwright/web_socket_client.rb, line 151
        def handle_on_error(error_message:)
  return false if @on_error.nil?

  @on_error.call(error_message)
  true
end
handle_on_message(data) click to toggle source
# File lib/playwright/web_socket_client.rb, line 158
        def handle_on_message(data)
  return if @ready_state != STATE_OPENED

  @on_message&.call(data)
end
handle_on_open() click to toggle source
# File lib/playwright/web_socket_client.rb, line 142
        def handle_on_open
  @on_open&.call
end
setup() click to toggle source
# File lib/playwright/web_socket_client.rb, line 74
        def setup
  @ready_state = STATE_CONNECTING
  @driver.on(:open) do
    @ready_state = STATE_OPENED
    handle_on_open
  end
  @driver.on(:close) do |event|
    @ready_state = STATE_CLOSED
    handle_on_close(reason: event.reason, code: event.code)
  end
  @driver.on(:error) do |event|
    if !handle_on_error(error_message: event.message)
      raise TransportError.new(event.message)
    end
  end
  @driver.on(:message) do |event|
    handle_on_message(event.data)
  end
end
wait_for_data() click to toggle source
# File lib/playwright/web_socket_client.rb, line 94
        def wait_for_data
  @driver.parse(@impl.readpartial)
end