まず、私はすでに見てきました:
推奨事項を試しましたが、まだうまくいきません。
私のコードは次のとおりです。
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とthin ip/portの両方を試しました。それでもうまくいきませんでした。
本番環境ではなく、開発環境では問題なく動作します。
アップデート:
WebSockets と EventSource の両方を無効にして、長いポーリングを強制的に使用するようにしました。これにより、エラーなしで ngnix を介して動作するようになりました。
また、ラック ミドルウェアとしても実行されるため、追加のポートは必要ありません。