我需要实现一个只写数据而不接收数据的服务器。我发现的所有 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'
}
关于ruby - 如何让 eventmachine 服务器只写数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4472082/