Skip to content

Instantly share code, notes, and snippets.

@squarism
Created January 7, 2012 00:02
Show Gist options
  • Save squarism/1573153 to your computer and use it in GitHub Desktop.
Save squarism/1573153 to your computer and use it in GitHub Desktop.
eventmachine_skeleton
# Gemfile
source "http://rubygems.org"
gem 'eventmachine'
gem 'em-net-http'
gem 'em-http-request', "=1.0.0.beta.4"
gem 'em-mysql', "=0.4.2"
# server.rb
#!/usr/bin/env ruby
# echo server
require 'eventmachine'
class EchoServer < EM::Connection
def post_init
puts "client connecting"
end
def unbind
puts "client disconnecting"
end
def receive_data(data)
puts "received #{data} from client"
send_data ">> #{data}"
end
end
EM.run do
EM.start_server('0.0.0.0', 9000, EchoServer)
puts "Server running on port 9000"
end
# client.rb
#!/usr/bin/env ruby
# simple client
require 'eventmachine'
class EchoClient < EM::Connection
def initialize(user)
@user = user
end
def post_init
puts "connected"
send_data "Hello from #{@user}"
end
def unbind
puts "disconnected"
end
def receive_data(data)
puts "received #{data}"
close_connection
EM.stop
end
end
EM.run do
EM.connect('localhost', 9000, EchoClient, ARGV[0])
end
# $ ./server.rb
# $ ./client.rb bob
# connected
# received >> Hello from bob
# disconnected
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment