Class: Slack::RealTime::Socket
- Inherits:
-
Object
- Object
- Slack::RealTime::Socket
show all
- Defined in:
- lib/slack/real_time/socket.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(url, options = {}) ⇒ Socket
Returns a new instance of Socket.
10
11
12
13
14
15
|
# File 'lib/slack/real_time/socket.rb', line 10
def initialize(url, options = {})
@url = url
@options = options
@driver = nil
@logger = options.delete(:logger) || Slack::RealTime::Config.logger || Slack::Config.logger
end
|
Instance Attribute Details
#driver ⇒ Object
Returns the value of attribute driver.
6
7
8
|
# File 'lib/slack/real_time/socket.rb', line 6
def driver
@driver
end
|
#options ⇒ Object
Returns the value of attribute options.
5
6
7
|
# File 'lib/slack/real_time/socket.rb', line 5
def options
@options
end
|
#url ⇒ Object
Returns the value of attribute url.
4
5
6
|
# File 'lib/slack/real_time/socket.rb', line 4
def url
@url
end
|
Instance Method Details
#close ⇒ Object
56
57
58
|
# File 'lib/slack/real_time/socket.rb', line 56
def close
@driver = nil
end
|
#connect! {|driver| ... } ⇒ Object
27
28
29
30
31
32
33
34
|
# File 'lib/slack/real_time/socket.rb', line 27
def connect!
return if connected?
connect
logger.debug("#{self.class}##{__method__}") { driver.class }
yield driver if block_given?
end
|
#connected? ⇒ Boolean
40
41
42
|
# File 'lib/slack/real_time/socket.rb', line 40
def connected?
!driver.nil?
end
|
#disconnect! ⇒ Object
36
37
38
|
# File 'lib/slack/real_time/socket.rb', line 36
def disconnect!
driver.close
end
|
#send_data(message) ⇒ Object
17
18
19
20
21
22
23
24
25
|
# File 'lib/slack/real_time/socket.rb', line 17
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
|
#start_async(_client) ⇒ #join
52
53
54
|
# File 'lib/slack/real_time/socket.rb', line 52
def start_async(_client)
fail NotImplementedError, "Expected #{self.class} to implement #{__method__}."
end
|
#start_sync(client) ⇒ Object
44
45
46
47
48
49
|
# File 'lib/slack/real_time/socket.rb', line 44
def start_sync(client)
thread = start_async(client)
thread.join if thread
rescue Interrupt
thread.exit if thread
end
|