rails和ruby客户端之间的长轮询/推送事件

时间:2013-07-16 13:37:24

标签: ruby-on-rails ruby push-notification publish-subscribe long-polling

我搜索了一种在Rails应用程序和多个Ruby客户端之间构建pub / sub服务的合适方法。

到目前为止,我尝试了faye和faye-rails,但它们并不合适,因为消息排队等待,直到重新启动正在收听某个频道的客户端才传递。 此外,我无法使用像Pusher或PubNub这样的服务。

有什么建议吗?

干杯 马丁

1 个答案:

答案 0 :(得分:4)

对于Rails 4,您可以查看ActionController::Live。这不适合您的需求吗?

class MyController < ActionController::Base
  include ActionController::Live

  def stream
    response.headers['Content-Type'] = 'text/event-stream'
    100.times {
      response.stream.write "hello world\n"
      sleep 1
    }
  rescue IOError
    # client disconneted
  ensure
    response.stream.close
  end
end

对于早期的Rails,您可以尝试这种方法: Ruby on Rails 3: Streaming data through Rails to clientRails 3.2 streaming(第二个链接是注意Last-Modified标题)