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)
-
block
(Proc(reason: String, code: Numeric)
) --
def on_close(&block) @on_close = block end
def on_error(&block)
-
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)
-
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)