jam-cloud/websocket-gateway/bin/websocket_gateway

77 lines
2.9 KiB
Ruby
Executable File

#!/usr/bin/env ruby
# establish database connection before including JamRuby
require 'active_record'
bin_dir = File.expand_path(File.dirname(__FILE__))
app_config_file = File.join(bin_dir, '..', 'config', 'application.yml')
db_config_file = File.join(bin_dir, '..', 'config', 'database.yml')
jamenv = ENV['JAMENV']
jamenv ||= 'development'
ENV['RUBY_ENV'] = ENV['RAILS_ENV'] = jamenv # set RUBY_ENV so that newrelic can find the mode
config = YAML::load(File.open(app_config_file))[jamenv]
db_config = YAML::load(File.open(db_config_file))[jamenv]
ActiveRecord::Base.establish_connection(db_config)
jam_instance = ENV['JAM_INSTANCE'] || 1
jam_instance = jam_instance.to_i
if jam_instance == 0
puts "JAM INSTANCE MUST BE > 0"
exit 1
end
# now bring in the Jam code
require 'jam_websockets'
include JamWebsockets
# run some method
if config["verbose"]
Logging.logger.root.level = :debug
else
Logging.logger.root.level = :info
end
require "#{Dir.pwd}/config/application.rb"
if jamenv == "production"
ENV['NEW_RELIC_LOG'] = "/var/log/websocket-gateway/newrelic_agent-#{jam_instance}.log"
one_meg = 1024 * 1024
Logging.logger.root.appenders = Logging.appenders.rolling_file("/var/log/websocket-gateway/#{jamenv}-#{jam_instance}.log", :truncate=>true, :age=>'daily', :size=>one_meg, :keep=>20, :layout => Logging.layouts.pattern(:pattern => '[%d] %-5l: %m\n'))
else
ENV['NEW_RELIC_LOG'] = "#{Dir.pwd}/log/newrelic_agent-#{jam_instance}.log"
Logging.logger.root.appenders = Logging.appenders.stdout
end
# start monitoring
ENV['NRCONFIG'] = "#{Dir.pwd}/config/newrelic.yml"
require 'newrelic_rpm'
Object.send(:remove_const, :Rails) # this is to 'fool' new relic into not thinking this is a Rails app.
::NewRelic::Agent.manual_start
# determine gateway_name
gateway_name = ENV['GATEWAY_NAME'] || 'default'
gateway_name = "#{gateway_name}-#{jam_instance}"
Server.new.run(:port => config["port"] + (jam_instance-1 ) * 2,
:emwebsocket_debug => config["emwebsocket_debug"],
:connect_time_stale_client => config["connect_time_stale_client"],
:connect_time_expire_client => config["connect_time_expire_client"],
:connect_time_stale_browser => config["connect_time_stale_browser"],
:connect_time_expire_browser => config["connect_time_expire_browser"],
:max_connections_per_user => config["max_connections_per_user"],
:rabbitmq_host => config['rabbitmq_host'],
:rabbitmq_port => config['rabbitmq_port'],
:influxdb_database => config['influxdb_database'],
:influxdb_username => config['influxdb_username'],
:influxdb_password => config['influxdb_password'],
:influxdb_hosts => config['influxdb_hosts'],
:influxdb_port => config['influxdb_port'],
:cidr => config['cidr'],
:gateway_name => gateway_name)