每个打开的连接的EventMachine计时器

问题描述 投票:0回答:1

我们需要让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实例化一个计时器?

ruby eventmachine
1个回答
0
投票

确定,这比我想象的要容易。在我的post_init实现的BServer方法中,添加以下内容:

EM.add_periodic_timer(10) do
  send_char('A')
end
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.