Ruby 向sinatra中的请求添加非阻塞延迟事件
我正在使用聊天客户端示例演示sinatra中的流和服务器端事件,请参见。注意,为了使用现代jquery,必须对其进行调整。具体而言: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 &
// 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个人完成睡眠之前,不会收到更多的帖子 你试过在一根线里面做吗。。。?