Добавление неблокирующего отложенного события в запрос в sinatra

Я играю с примером клиента чата, который демонстрирует потоки и события на стороне сервера в 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

Но тогда 204 фактически не отправляется до тех пор, пока не закончится 20-секундный сон, что глупо. Кроме того, кажется, что это происходит после того, как поступило 5 отложенных сообщений. Тогда больше сообщений не будет получено, пока эти 5 не закончат свой сон.

0 ответов

Другие вопросы по тегам