class Slack::RealTime::Client

def start!

def start!
  fail ClientAlreadyStartedError if started?
  EM.run do
    @options = web_client.rtm_start
    @socket = Slack::RealTime::Socket.new(@options['url'])
    @socket.connect! do |ws|
      ws.on :open do |event|
        open(event)
      end
      ws.on :message do |event|
        dispatch(event)
      end
      ws.on :close do |event|
        close(event)
      end
    end
  end
end