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 オプションをオフにする必要があると思います。

class AreaServer < EventMachine::Connection
  attr_accessor :オプション、:ステータス

  def receive_data(データ)
    send_data("取得しました: #{data}\n")
    close_connect_after_writing
  終わり
終わり
于 2012-09-09T18:57:23.437 に答える