Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 向sinatra中的请求添加非阻塞延迟事件_Ruby_Sinatra_Server Sent Events - Fatal编程技术网

Ruby 向sinatra中的请求添加非阻塞延迟事件

Ruby 向sinatra中的请求添加非阻塞延迟事件,ruby,sinatra,server-sent-events,Ruby,Sinatra,Server Sent Events,我正在使用聊天客户端示例演示sinatra中的流和服务器端事件,请参见。注意,为了使用现代jquery,必须对其进行调整。具体而言: // writing $(document).on("submit", "form", function(e) { 我开始胡思乱想,如果我想让广播在延迟一段时间后播出该怎么办。我可以做一些天真的事情,并通过睡眠修改post响应: post '/' do sleep 20 settings.connections.each { |out| out &

我正在使用聊天客户端示例演示sinatra中的流和服务器端事件,请参见。注意,为了使用现代jquery,必须对其进行调整。具体而言:

// writing
$(document).on("submit", "form", function(e) {
我开始胡思乱想,如果我想让广播在延迟一段时间后播出该怎么办。我可以做一些天真的事情,并通过睡眠修改post响应:

 post '/' do
   sleep 20
   settings.connections.each { |out| out << "data: #{params[:msg]}\n\n" }
   204 # response without entity body
 end

但实际上,204在20秒的睡眠结束后才会发送,这很愚蠢。另外,在收到5条延迟消息后,这条消息似乎会中断。然后,在这5个人完成睡眠之前,不会收到更多的帖子

你试过在一根线里面做吗。。。?