lib/slack/real_time/concurrency/celluloid.rb in slack-ruby-client-0.14.4 vs lib/slack/real_time/concurrency/celluloid.rb in slack-ruby-client-0.14.5

- old
+ new

@@ -1,5 +1,6 @@ +# frozen_string_literal: true require 'websocket/driver' require 'socket' require 'forwardable' require 'celluloid/current' require 'celluloid/io' @@ -34,16 +35,21 @@ @connected = @socket.connect driver.start loop { read } if socket rescue EOFError, Errno::ECONNRESET, Errno::EPIPE => e logger.debug("#{self.class}##{__method__}") { e } - driver.emit(:close, WebSocket::Driver::CloseEvent.new(1001, 'server closed connection')) unless @closing + unless @closing + driver.emit( + :close, + WebSocket::Driver::CloseEvent.new(1001, 'server closed connection') + ) + end end def disconnect! super - @ping_timer.cancel if @ping_timer + @ping_timer&.cancel end def close @closing = true super @@ -56,10 +62,10 @@ async.handle_read(buffer) end def handle_read(buffer) logger.debug("#{self.class}##{__method__}") { buffer } - driver.parse buffer if driver + driver&.parse buffer end def write(data) logger.debug("#{self.class}##{__method__}") { data } socket.write(data)