EventMachine非常慢

时间:2012-09-09 18:27:10

标签: ruby eventmachine

在我的应用程序中,send_data方法是否有任何落后的原因?我的telnet(许多其他客户端测试了相同的结果)窗口等待1-2秒,然后才发送数据。

以下申请没有延迟:

require 'eventmachine'

class AreaServer < EventMachine::Connection
  attr_accessor :options, :status

  def receive_data(data)
    send_data("I got: #{data}\r\n")
  end
end

EM.run do
  EM.start_server '192.168.0.199', 4000, AreaServer do |conn|
    conn.options = {:my => 'options'}
    conn.status = :OK
  end
end

所以我怀疑这不是一个网络问题。

1 个答案:

答案 0 :(得分:0)

输出流似乎在写完后保持打开状态,所以我试图找到一个解决方案来关闭这个流。

如果您将close_connection_after_writing写入receive_data,则会在写入后关闭该流。我猜你应该关掉keep_alive选项。

class AreaServer < EventMachine::Connection
  attr_accessor :options, :status

  def receive_data(data)
    send_data("I got: #{data}\n")
    close_connection_after_writing
  end
end