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

时间:2014-06-28 09:05:51

标签: ruby sinatra server-sent-events

我正在玩聊天客户端示例,该示例演示了sinatra中的流和服务器端事件(请参阅https://gist.github.com/rkh/1476463)。请注意,必须调整它以使用现代jquery。具体做法是:

// writing
$(document).on("submit", "form", function(e) {

我开始想到如果我希望广播在一段延迟的时间后发生的话。我可以做一些天真的事情并通过睡眠来修改帖子回复:

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

但是,直到20秒睡眠完成后,204实际上才被发送,这很愚蠢。此外,这似乎在5个延迟消息进入后中断。然后在这5个完成睡眠之前不再收到任何帖子。

0 个答案:

没有答案