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 }