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
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(reason, code)
end
@sessions = {}
@closed = false
end
|
Class Method Details
.from_session(session) ⇒ Object
69
70
71
|
# File 'lib/puppeteer/connection.rb', line 69
def self.from_session(session)
session.connection
end
|
Instance Method Details
#async_send_message(method, params = {}) ⇒ Object
89
90
91
92
93
94
|
# File 'lib/puppeteer/connection.rb', line 89
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
|
#create_session(target_info) ⇒ CDPSession
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
|
# File 'lib/puppeteer/connection.rb', line 251
def create_session(target_info)
result = send_message('Target.attachToTarget', targetId: target_info.target_id, flatten: true)
session_id = result['sessionId']
20.times do
if @sessions[session_id]
return @sessions[session_id]
end
sleep 0.1
end
end
|
#dispose ⇒ Object
244
245
246
247
|
# File 'lib/puppeteer/connection.rb', line 244
def dispose
handle_close
@transport.close
end
|
#on_close(&block) ⇒ Object
236
237
238
|
# File 'lib/puppeteer/connection.rb', line 236
def on_close(&block)
@on_close = block
end
|
#on_message(&block) ⇒ Object
240
241
242
|
# File 'lib/puppeteer/connection.rb', line 240
def on_message(&block)
@on_message = block
end
|
#raw_send(message:) ⇒ Object
100
101
102
103
104
105
106
|
# File 'lib/puppeteer/connection.rb', line 100
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
85
86
87
|
# File 'lib/puppeteer/connection.rb', line 85
def send_message(method, params = {})
await async_send_message(method, params)
end
|
#session(session_id) ⇒ ?CDPSession
75
76
77
|
# File 'lib/puppeteer/connection.rb', line 75
def session(session_id)
@sessions[session_id]
end
|
#url ⇒ Object
79
80
81
|
# File 'lib/puppeteer/connection.rb', line 79
def url
@url
end
|