diff --git a/lib/slack/real_time/concurrency/celluloid.rb b/lib/slack/real_time/concurrency/celluloid.rb index a0b528be..1f8b0ad8 100644 --- a/lib/slack/real_time/concurrency/celluloid.rb +++ b/lib/slack/real_time/concurrency/celluloid.rb @@ -68,9 +68,12 @@ def write(data) end def start_async(client) - Thread.new do - client.run_loop - end + @client = client + Actor.new(future.run_client_loop) + end + + def run_client_loop + @client.run_loop end def connected? @@ -79,6 +82,18 @@ def connected? protected + class Actor + attr_reader :future + + def initialize(future) + @future = future + end + + def join + @future.value + end + end + def build_socket socket = ::Celluloid::IO::TCPSocket.new(addr, port) socket = ::Celluloid::IO::SSLSocket.new(socket, build_ssl_context) if secure?