Skip to content

Instantly share code, notes, and snippets.

@thehack
Created December 17, 2010 11:42
Show Gist options
  • Save thehack/744815 to your computer and use it in GitHub Desktop.
Save thehack/744815 to your computer and use it in GitHub Desktop.
trying to set up a cool.io chat server with sinatra. Please advise.
#!/usr/bin/ruby
require 'rubygems'
require 'sinatra'
require 'cool.io'
#config
ADDR = '127.0.0.1'
PORT = 4321
class EchoServerConnection < Cool.io::TCPSocket
def on_connect
puts "#{remote_addr}:#{remote_port} connected"
end
def on_close
puts "#{remote_addr}:#{remote_port} disconnected"
end
def on_read(data)
write data
end
end
class ClientConnection < Cool.io::TCPSocket
def on_connect
puts "#{remote_addr}:#{remote_port} connected"
write "bounce this back to me"
end
def on_close
puts "#{remote_addr}:#{remote_port} disconnected"
end
def on_read(data)
puts "got #{data}"
close
end
def on_resolve_failed
print "DNS resolve failed"
end
def on_connect_failed
print "connect failed, meaning our connection to their port was rejected"
end
end
get '/server' do
server = Cool.io::TCPServer.new(ADDR, PORT, EchoServerConnection)
server.attach(Cool.io::Loop.default)
"Echo server listening on #{ADDR}:#{PORT}"
Cool.io::Loop.default.run
end
get '/client' do
event_loop = Cool.io::Loop.default
client = ClientConnection.connect(ADDR, PORT)
client.attach(event_loop)
"Echo client connecting to #{ADDR}:#{PORT}..."
event_loop.run
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment