我们需要让EventMachine服务器每隔几秒钟“ ping”与之连接的客户端。
EventMachine.run do
config.each do |instance|
case instance[:type]
when 'A'
EventMachine.start_server instance[:hostname], instance[:port_num], AServer, instance
puts "#{Time.now.utc} :: A #{instance[:hostname]}/#{instance[:port_num]} :: Initialize"
when 'B'
EventMachine.start_server instance[:hostname], instance[:port_num], BServer, instance
puts "#{Time.now.utc} :: B #{instance[:hostname]}/#{instance[:port_num]} :: Initialize"
end
end
对于连接到BServer的客户端,我们希望每10秒向他们发送一个字符-如何为每个启动的BServer实例化一个计时器?
确定,这比我想象的要容易。在我的post_init
实现的BServer
方法中,添加以下内容:
EM.add_periodic_timer(10) do
send_char('A')
end