Class: Puppeteer::Connection

Inherits:
Object
  • Object
show all
Includes:
DebugPrint, EventCallbackable
Defined in:
lib/puppeteer/connection.rb

Defined Under Namespace

Classes: MessageCallback, ProtocolError, RequestDebugPrinter, ResponseDebugPrinter

Class Method Summary collapse

Instance Method Summary collapse

Methods included from EventCallbackable

#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?

Returns:

  • (Boolean)


60
61
62
# File 'lib/puppeteer/connection.rb', line 60

def closed?
  @closed
end

#create_session(target_info) ⇒ CDPSession

Parameters:

  • targetInfo (Protocol.Target.TargetInfo)

Returns:



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

#disposeObject



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

Parameters:

  • method (string)
  • params (!Object=) (defaults to: {})


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

Parameters:

  • sessionId (string)

Returns:



80
81
82
# File 'lib/puppeteer/connection.rb', line 80

def session(session_id)
  @sessions[session_id]
end

#urlObject



84
85
86
# File 'lib/puppeteer/connection.rb', line 84

def url
  @url
end