Class: Puppeteer::CDPSession
Defined Under Namespace
Classes: Error
Instance Attribute 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(connection, target_type, session_id) ⇒ CDPSession
Returns a new instance of CDPSession.
11
12
13
14
15
16
|
# File 'lib/puppeteer/cdp_session.rb', line 11
def initialize(connection, target_type, session_id)
@callbacks = {}
@connection = connection
@target_type = target_type
@session_id = session_id
end
|
Instance Attribute Details
#connection ⇒ Object
Returns the value of attribute connection.
18
19
20
|
# File 'lib/puppeteer/cdp_session.rb', line 18
def connection
@connection
end
|
Instance Method Details
#async_send_message(method, params = {}) ⇒ Object
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/puppeteer/cdp_session.rb', line 30
def async_send_message(method, params = {})
if !@connection
raise Error.new("Protocol error (#{method}): Session closed. Most likely the #{@target_type} has been closed.")
end
id = @connection.raw_send(message: { sessionId: @session_id, method: method, params: params })
promise = resolvable_future
callback = Puppeteer::Connection::MessageCallback.new(method: method, promise: promise)
@callbacks[id] = callback
promise
end
|
#detach ⇒ Object
66
67
68
69
70
71
|
# File 'lib/puppeteer/cdp_session.rb', line 66
def detach
if !@connection
raise Error.new("Session already detarched. Most likely the #{@target_type} has been closed.")
end
@connection.send_message('Target.detachFromTarget', sessionId: @session_id)
end
|
#handle_closed ⇒ Object
73
74
75
76
77
78
79
80
81
82
83
|
# File 'lib/puppeteer/cdp_session.rb', line 73
def handle_closed
@callbacks.each_value do |callback|
callback.reject(
Puppeteer::Connection::ProtocolError.new(
method: callback.method,
error_message: 'Target Closed.'))
end
@callbacks.clear
@connection = nil
emit_event 'Events.CDPSession.Disconnected'
end
|
#handle_message(message) ⇒ Object
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/puppeteer/cdp_session.rb', line 42
def handle_message(message)
if message['id']
if callback = @callbacks.delete(message['id'])
callback_with_message(callback, message)
else
raise Error.new("unknown id: #{id}")
end
else
emit_event message['method'], message['params']
end
end
|
#send_message(method, params = {}) ⇒ Object
23
24
25
|
# File 'lib/puppeteer/cdp_session.rb', line 23
def send_message(method, params = {})
await async_send_message(method, params)
end
|