class Travis::Client::Listener::Socket
def fetch_auth(*channels)
def fetch_auth(*channels) channels.select! { |c| signatures[c].nil? if c.start_with? 'private-' } return unless channels.any? signatures.merge! session.post_raw('/pusher/auth', channels:, socket_id:)['channels'] end
def get_private_auth(channel)
def get_private_auth(channel) fetch_auth(channel.name) signatures[channel.name] end
def handle_error(data)
def handle_error(data) if data.is_a? Hash code = data['code'] message = data['message'] end message ||= data.inspect case code when 4100 then reconnect(1) when 4200, 4201, 4202 then reconnect else raise Travis::Client::Error, format('Pusher error: %s (code: %p)', message, code) end end
def initialize(application_key, options = {})
def initialize(application_key, options = {}) @session = options.fetch(:session) @signatures = {} super bind('pusher:error') do |data| handle_error(data) end end
def reconnect(delay = nil)
def reconnect(delay = nil) disconnect if connected sleep delay if delay&.positive? connect end
def subscribe_all
def subscribe_all # bulk auth on connect fetch_auth(*channels.channels.keys) super end