module PusherFake::Server

Socket and web server manager.

Public Class Methods

start() click to toggle source

Start the servers.

@see start_socket_server @see start_web_server

# File lib/pusher-fake/server.rb, line 14
def start
  chain_trap_handlers

  EventMachine.run do
    start_web_server
    start_socket_server
  end
end
start_socket_server() click to toggle source

Start the WebSocket server.

# File lib/pusher-fake/server.rb, line 24
def start_socket_server
  EventMachine::WebSocket.start(configuration.socket_options) do |socket|
    socket.onopen do
      connection = Connection.new(socket)
      connection.establish

      socket.onmessage { |data| connection.process(data) }
      socket.onclose   { Channel.remove(connection) }
    end
  end
end
start_web_server() click to toggle source

Start the web server.

# File lib/pusher-fake/server.rb, line 37
def start_web_server
  options = configuration.web_options.dup
  host    = options.delete(:host)
  port    = options.delete(:port)

  Thin::Logging.silent = true
  Thin::Server.new(host, port, Application).tap do |server|
    options.each do |key, value|
      server.__send__(:"#{key}=", value)
    end

    server.start!
  end
end

Private Class Methods

chain_trap_handlers() click to toggle source

Force Thin::Server and EventMachine::WebSocket to call the chain of trap handlers to ensure other handles, such as RSpec, can interrupt.

# File lib/pusher-fake/server.rb, line 56
def chain_trap_handlers
  EventMachine::WebSocket.singleton_class.prepend(ChainTrapHandlers)
  Thin::Server.prepend(ChainTrapHandlers)
end
configuration() click to toggle source

Convenience method for access the configuration object.

@return [Configuration] The configuration object.

# File lib/pusher-fake/server.rb, line 64
def configuration
  PusherFake.configuration
end