我寻找一种合适的方式在 Rails 应用程序和多个 Ruby 客户端之间构建发布/订阅服务。
到目前为止,我尝试了 faye 和 faye-rails,但它们并不合适,因为消息会排队等待,直到正在侦听某个通道的客户端重新启动后才会传递。我也无法使用 Pusher 或 PubNub 之类的服务。
有什么建议吗?
干杯马丁
我寻找一种合适的方式在 Rails 应用程序和多个 Ruby 客户端之间构建发布/订阅服务。
到目前为止,我尝试了 faye 和 faye-rails,但它们并不合适,因为消息会排队等待,直到正在侦听某个通道的客户端重新启动后才会传递。我也无法使用 Pusher 或 PubNub 之类的服务。
有什么建议吗?
干杯马丁
对于 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 client,
Rails 3.2 streaming(第二个链接是注意Last-Modified
标题)