# File lib/pry-remote-em/broker.rb, line 12
      def run(host = ENV['PRYEMBROKER'] || DEF_BROKERHOST, port = ENV['PRYEMBROKERPORT'] || DEF_BROKERPORT, opts = {:tls => false})
        raise "root permission required for port below 1024 (#{port})" if port < 1024 && Process.euid != 0
        @host      = host
        @port      = port
        # Brokers cannot use SSL directly. If they do then when a proxy request to an SSL server is received
        # the client and server will not be able to negotiate a SSL session. The proxied traffic can be SSL
        # encrypted, but the SSL session will be between the client and the server.
        opts       = opts.dup
        opts[:tls] = false
        @opts      = opts
        begin
          EM.start_server(host, port, PryRemoteEm::Broker, opts) do |broker|
          end
          log.info("[pry-remote-em broker] listening on #{opts[:tls] ? 'pryems' : 'pryem'}://#{host}:#{port}")
          @listening = true
        rescue => e
          # EM 1.0.0.beta4's message tells us the port is in use; 0.12.10 just says, 'no acceptor'
          if (e.message.include?('port is in use') || e.message.include?('no acceptor'))
            # [pry-remote-em broker] a broker is already listening on #{host}:#{port}
          else
            raise e
          end
        end
        client { |c| yield self } if block_given?
      end