Ruby 如何让eventmachine服务器只写数据?

Ruby 如何让eventmachine服务器只写数据?,ruby,eventmachine,Ruby,Eventmachine,我需要实现一个只写数据而不接收数据的服务器。我发现的所有eventmachine服务器示例总是让服务器先接收数据,然后用数据响应。我需要它在客户端连接后开始向客户端写入数据 我试着在post_init中加入一个循环,但似乎不起作用。。。客户端连接,服务器写入,但客户端似乎从未收到任何东西。建议 测试服务器: require 'rubygems' require 'eventmachine' require 'time' module TestServer def post_init

我需要实现一个只写数据而不接收数据的服务器。我发现的所有eventmachine服务器示例总是让服务器先接收数据,然后用数据响应。我需要它在客户端连接后开始向客户端写入数据

我试着在post_init中加入一个循环,但似乎不起作用。。。客户端连接,服务器写入,但客户端似乎从未收到任何东西。建议

测试服务器:

require 'rubygems'
require 'eventmachine'
require 'time'

module TestServer
  def post_init
    puts "-- client connected, sending data --"
    while true do
      send_data "Hello from TestServer\n"
      puts "sent #{Time.now.iso8601}"
    end
  end
end

EventMachine::run {
  EventMachine::start_server "127.0.0.1", 4001, TestServer
  puts 'running test server on 4001'
}
测试客户端:

require 'rubygems'
require 'eventmachine'

module Forwarder
  def post_init
    puts "-- connected to server --"
  end

  def receive_data data
    # none of the following is ever output
    puts "in receive_data"
    puts data
  end
end

EventMachine::run {
  EventMachine::connect '127.0.0.1', 4001, Forwarder
}
谢谢…

多亏了#eventmachine上的tmm1,我们解决了这个问题。客户是一样的。服务器代码为:

require 'rubygems'
require 'eventmachine'
require 'time'

module TestServer
  def post_init
    puts "-- client connected --"
    @timer = EM::PeriodicTimer.new(0.1) {
      send_data "Hello from TestServer at #{Time.now.iso8601}\n"
    }
  end

end

EventMachine::run {
  EventMachine::start_server "127.0.0.1", 4001, TestServer
  puts 'running test server on 4001'
}