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
58
59
60
61
|
# File 'lib/puppeteer/connection.rb', line 39
def initialize(url, transport, delay = 0)
@url = url
@last_id = 0
@callbacks = Concurrent::Hash.new
@delay = delay
@transport = transport
@transport.on_message do |data|
message = JSON.parse(data)
sleep_before_handling_message(message)
if should_handle_synchronously?(message)
handle_message(message)
else
async_handle_message(message)
end
end
@transport.on_close do |reason, code|
handle_close
end
@sessions = Concurrent::Hash.new
@closed = false
end
|
Class Method Details
.from_session(session) ⇒ Object
112
113
114
|
# File 'lib/puppeteer/connection.rb', line 112
def self.from_session(session)
session.connection
end
|
Instance Method Details
#async_send_message(method, params = {}) ⇒ Object
132
133
134
135
136
137
138
139
140
141
|
# File 'lib/puppeteer/connection.rb', line 132
def async_send_message(method, params = {})
promise = resolvable_future
generate_id do |id|
@callbacks[id] = MessageCallback.new(method: method, promise: promise)
raw_send(id: id, message: { method: method, params: params })
end
promise
end
|
#closed? ⇒ Boolean
used only in Browser#connected?
64
65
66
|
# File 'lib/puppeteer/connection.rb', line 64
def closed?
@closed
end
|
#create_session(target_info) ⇒ CDPSession
311
312
313
314
315
|
# File 'lib/puppeteer/connection.rb', line 311
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
304
305
306
307
|
# File 'lib/puppeteer/connection.rb', line 304
def dispose
handle_close
@transport.close
end
|
#generate_id(&block) ⇒ Object
package private. not intended to use externally.
“‘usage connection.generate_id do |generated_id|
end ““
151
152
153
|
# File 'lib/puppeteer/connection.rb', line 151
def generate_id(&block)
block.call(@last_id += 1)
end
|
#on_close(&block) ⇒ Object
296
297
298
|
# File 'lib/puppeteer/connection.rb', line 296
def on_close(&block)
@on_close = block
end
|
#on_message(&block) ⇒ Object
300
301
302
|
# File 'lib/puppeteer/connection.rb', line 300
def on_message(&block)
@on_message = block
end
|
#raw_send(id:, message:) ⇒ Object
package private. not intended to use externally.
156
157
158
159
160
161
162
163
164
165
166
167
168
|
# File 'lib/puppeteer/connection.rb', line 156
def raw_send(id:, message:)
payload = JSON.fast_generate(message.compact.merge(id: id))
@transport.send_text(payload)
request_debug_printer.handle_payload(payload)
end
|
#send_message(method, params = {}) ⇒ Object
128
129
130
|
# File 'lib/puppeteer/connection.rb', line 128
def send_message(method, params = {})
await async_send_message(method, params)
end
|
#session(session_id) ⇒ ?CDPSession
118
119
120
|
# File 'lib/puppeteer/connection.rb', line 118
def session(session_id)
@sessions[session_id]
end
|
#url ⇒ Object
122
123
124
|
# File 'lib/puppeteer/connection.rb', line 122
def url
@url
end
|