Sha256: 6eb4b613499ea1fefb7892c55073d867b8699216e9ffe8d9a0478eeb6957624a

Contents?: true

Size: 1.24 KB

Versions: 1

Compression:

Stored size: 1.24 KB

Contents

require 'puggernaut/server/shared'
require 'puggernaut/server/http'
require 'puggernaut/server/channel'
require 'puggernaut/server/tcp'
require 'puggernaut/server/websocket'

module Puggernaut
  class Server
    
    include Logger
    
    def initialize(http_port=8100, tcp_port=http_port.to_i+1, ws_port=tcp_port.to_i+1)
      puts "\nPuggernaut is starting on #{http_port} (Long Poll HTTP), #{tcp_port} (Puggernaut TCP), and #{ws_port} (WebSocket TCP)"
      puts "*snort*\n\n"

      begin
        Channel.channels = []
        GC.start
        EM.epoll if EM.epoll?
        EM.run do
          logger.info "Server#initialize - Starting HTTP - #{http_port}"
          EM.start_server '0.0.0.0', http_port, Http
          
          logger.info "Server#initialize - Starting TCP - #{tcp_port}"
          EM.start_server '0.0.0.0', tcp_port, Tcp
          
          logger.info "Server#initialize - Starting WebSocket - #{ws_port}"
          Websocket.new '0.0.0.0', ws_port
          
          errors = 0
        end
      rescue Interrupt
        logger.info "Server#initialize - Shutting down"
        exit
      rescue
        logger.error "Server#initialize - Error - #{$!.message}"
        logger.error "\t" + $!.backtrace.join("\n\t")
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
puggernaut-0.2.0 lib/puggernaut/server.rb