我正在使用websockets-rails gem构建一个每秒接收一些信息的应用程序。 现在,似乎所有消息都是在方法完全执行后发送的。
我的websockets控制器:
class DbTestsController< WebsocketRails::BaseController
def run_tests_on_all
dbtsch = DbTestsScheduler.new
dbtsch.run(1, 10, message['shard'], :push) do |ops|
send_message 'db_test.run_tests_on_all', ops
Rails.logger.info(ops)
end
end
end
'run'方法看起来像
def run(ecfs, fafs, shard, operation)
st = tep_t = Time.now
while st + fafs.second > Time.now
Octopus.using(shard) do
send(operation)
end
if tep_t + ecfs.second <= Time.now
tep_t = tep_t + 1.second
yield(@ops) if block_given?
@ops = 0
end
end
end
在控制台中,我每秒都会看到Rails.logger.info(ops)
输出消息,但send_message
在方法执行完成后立即发送所有10个结果。