1

是否有任何理由在我的应用程序中,该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

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

4

1 回答 1

0

似乎输出流在写入后保持打开状态,因此我试图找到关闭此流的解决方案。

如果您写入close_connection_after_writingreceive_data则流将在写入后关闭。我想你应该关闭 keep_alive 选项。

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

  def 接收数据(数据)
    send_data("我得到了:#{data}\n")
    close_connection_after_writing
  结尾
结尾
于 2012-09-09T18:57:23.437 回答