mirror of
https://github.com/faye/faye-websocket-ruby.git
synced 2025-11-01 13:59:13 +00:00
44 lines
984 B
Ruby
44 lines
984 B
Ruby
require 'rubygems'
|
|
require File.expand_path('../../lib/faye/websocket', __FILE__)
|
|
require 'rack'
|
|
require 'eventmachine'
|
|
|
|
port = ARGV[0] || 7000
|
|
secure = ARGV[1] == 'ssl'
|
|
|
|
static = Rack::File.new(File.dirname(__FILE__))
|
|
|
|
app = lambda do |env|
|
|
if env['HTTP_UPGRADE']
|
|
socket = Faye::WebSocket.new(env, ['irc', 'xmpp'])
|
|
p [:open, socket.url, socket.version, socket.protocol]
|
|
|
|
socket.onmessage = lambda do |event|
|
|
socket.send(event.data)
|
|
end
|
|
|
|
socket.onclose = lambda do |event|
|
|
p [:close, event.code, event.reason]
|
|
socket = nil
|
|
end
|
|
|
|
[-1, {}, []]
|
|
else
|
|
static.call(env)
|
|
end
|
|
end
|
|
|
|
EM.run {
|
|
thin = Rack::Handler.get('thin')
|
|
thin.run(app, :Port => port) do |server|
|
|
if secure
|
|
server.ssl = true
|
|
server.ssl_options = {
|
|
:private_key_file => File.expand_path('../../spec/server.key', __FILE__),
|
|
:cert_chain_file => File.expand_path('../../spec/server.crt', __FILE__)
|
|
}
|
|
end
|
|
end
|
|
}
|
|
|