lib/slack/real_time/concurrency/celluloid.rb in slack-ruby-client-0.7.2 vs lib/slack/real_time/concurrency/celluloid.rb in slack-ruby-client-0.7.3
- old
+ new
@@ -28,15 +28,22 @@
super
run_loop
end
def run_loop
+ @closing = false
@socket = build_socket
@connected = @socket.connect
driver.start
loop { read } if socket
- rescue EOFError
- # connection closed
+ rescue EOFError => e
+ logger.debug("#{self.class}##{__method__}") { e }
+ driver.emit(:close, WebSocket::Driver::CloseEvent.new(1001, 'server closed connection')) unless @closing
+ end
+
+ def close
+ @closing = true
+ driver.close
end
def read
buffer = socket.readpartial(BLOCK_SIZE)
logger.debug("#{self.class}##{__method__}") { buffer }