Sha256: 2b21e644f43d3dfbc99a0d16c206f93cca807bfba7458c3b67b7b1be62af36b7
Contents?: true
Size: 1.83 KB
Versions: 2
Compression:
Stored size: 1.83 KB
Contents
module Slack module RealTime class Socket attr_accessor :url attr_accessor :options attr_reader :driver attr_reader :logger protected :logger def initialize(url, options = {}) @url = url @options = options @driver = nil @logger = options.delete(:logger) || Slack::RealTime::Config.logger || Slack::Config.logger end def send_data(message) logger.debug("#{self.class}##{__method__}") { message } case message when Numeric then driver.text(message.to_s) when String then driver.text(message) when Array then driver.binary(message) else false end end def connect! return if connected? connect logger.debug("#{self.class}##{__method__}") { driver.class } yield driver if block_given? end def disconnect! driver.close end def connected? !driver.nil? end def start_sync(&block) thread = start_async(&block) thread.join if thread rescue Interrupt thread.exit if thread end # @return [#join] def start_async fail NotImplementedError, "Expected #{self.class} to implement #{__method__}." end protected def addr URI(url).host end def secure? port == URI::HTTPS::DEFAULT_PORT end def port case (uri = URI(url)).scheme when 'wss'.freeze, 'https'.freeze URI::HTTPS::DEFAULT_PORT when 'ws', 'http'.freeze URI::HTTP::DEFAULT_PORT else uri.port end end def connect fail NotImplementedError, "Expected #{self.class} to implement #{__method__}." end def close(_event) @driver = nil end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
slack-ruby-client-0.7.1 | lib/slack/real_time/socket.rb |
slack-ruby-client-0.7.0 | lib/slack/real_time/socket.rb |