Class: Puppeteer::Connection
Defined Under Namespace
Classes: MessageCallback, ProtocolError, RequestDebugPrinter, ResponseDebugPrinter
Class Method Summary
collapse
Instance Method Summary
collapse
#add_event_listener, #emit_event, #observe_first, #on_event, #remove_event_listener
Methods included from DebugPrint
#debug_print, #debug_puts
Constructor Details
#initialize(url, transport, delay = 0) ⇒ Connection
Returns a new instance of Connection.
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/puppeteer/connection.rb', line 39
def initialize(url, transport, delay = 0)
@url = url
@last_id = 0
@callbacks = {}
@delay = delay
@transport = transport
@transport.on_message do |data|
message = JSON.parse(data)
sleep_before_handling_message(message)
async_handle_message(message)
end
@transport.on_close do |reason, code|
handle_close
end
@sessions = {}
@closed = false
end
|
Class Method Details
.from_session(session) ⇒ Object
74
75
76
|
# File 'lib/puppeteer/connection.rb', line 74
def self.from_session(session)
session.connection
end
|
Instance Method Details
#async_send_message(method, params = {}) ⇒ Object
94
95
96
97
98
99
|
# File 'lib/puppeteer/connection.rb', line 94
def async_send_message(method, params = {})
id = raw_send(message: { method: method, params: params })
promise = resolvable_future
@callbacks[id] = MessageCallback.new(method: method, promise: promise)
promise
end
|
#closed? ⇒ Boolean
used only in Browser#connected?
60
61
62
|
# File 'lib/puppeteer/connection.rb', line 60
def closed?
@closed
end
|
#create_session(target_info) ⇒ CDPSession
254
255
256
257
258
|
# File 'lib/puppeteer/connection.rb', line 254
def create_session(target_info)
result = send_message('Target.attachToTarget', targetId: target_info.target_id, flatten: true)
session_id = result['sessionId']
@sessions[session_id]
end
|
#dispose ⇒ Object
247
248
249
250
|
# File 'lib/puppeteer/connection.rb', line 247
def dispose
handle_close
@transport.close
end
|
#on_close(&block) ⇒ Object
239
240
241
|
# File 'lib/puppeteer/connection.rb', line 239
def on_close(&block)
@on_close = block
end
|
#on_message(&block) ⇒ Object
243
244
245
|
# File 'lib/puppeteer/connection.rb', line 243
def on_message(&block)
@on_message = block
end
|
#raw_send(message:) ⇒ Object
105
106
107
108
109
110
111
|
# File 'lib/puppeteer/connection.rb', line 105
def raw_send(message:)
id = generate_id
payload = JSON.fast_generate(message.compact.merge(id: id))
@transport.send_text(payload)
request_debug_printer.handle_payload(payload)
id
end
|
#send_message(method, params = {}) ⇒ Object
90
91
92
|
# File 'lib/puppeteer/connection.rb', line 90
def send_message(method, params = {})
await async_send_message(method, params)
end
|
#session(session_id) ⇒ ?CDPSession
80
81
82
|
# File 'lib/puppeteer/connection.rb', line 80
def session(session_id)
@sessions[session_id]
end
|
#url ⇒ Object
84
85
86
|
# File 'lib/puppeteer/connection.rb', line 84
def url
@url
end
|