首先,我已经看过:
我尝试了这些建议,但它仍然不适合我。
这是我的代码:
def broadcast(channel, data=nil, &block)
return if Rails.env.test?
if data.nil? && block_given?
data = capture(&block)
end
client = Faye::Client.new(APP_CONFIG['faye_url'])
client.publish(channel, data)
end
我尝试使用 Net::HTTP.post_form 并且服务器冻结,没有错误或警告或任何东西。我试过把它放到一个 EM.run 块中,但没有成功。我可以很好地使用 curl 发布到 Faye 并将其发送给订阅者,但由于某种原因,ruby 客户端无法正常工作。
我正在使用 faye-rails、ruby 1.9.3 和 rails 2.3.13。
服务器在 nginx 后面,我尝试了 ngnix ip/port 和瘦 ip/port。仍然没有工作。
它在开发中运行良好,只是在生产中不行。
更新:
我禁用了 WebSockets 和 EventSource 以强制它使用长轮询,因此它可以通过 ngnix 工作而不会出现任何错误。
它也作为机架中间件运行,因此它不需要任何额外的端口。