EventMachine是一个为ruby提供的事件驱动模型网络编程库, 就像Twisted和Python一样. 可以很容易的实现一个服务器和客户端通信的例子.
1. 首先安装eventmachine
gem install eventmachine
2. 创建一个服务器
#!/usr/bin/env ruby
require ‘rubygems’
require ‘eventmachine’
module EchoServer
def receive_data(data)
send_data(data)
end
end
EventMachine::run do
host = ’0.0.0.0′
port = 8080
EventMachine::start_server host, port, EchoServer
puts "Started EchoServer on #{host}:#{port}…"
end
3. 创建一个客户端
#!/usr/bin/env ruby
require ‘rubygems’
require ‘eventmachine’
module HttpHeaders
def post_init
send_data "GET /\r\n\r\n"
@data = ""
end
def receive_data(data)
@data << data
end
def unbind
if @data =~ /[\n][\r]*[\n]/m
$`.each {|line| puts ">>> #{line}" }
end
EventMachine::stop_event_loop
end
end
EventMachine::run do
EventMachine::connect ‘127.0.0.1’, 8080, HttpHeaders
end