Railsアプリケーションにfayeを実装しています。パブリッシュ メソッドは、両方のブラウザーが同じコンピューター上にある場合に正しく機能します。別のコンピューターの別のブラウザーからアプリケーションにアクセスすると、クライアントからサーバーにのみ機能し、他のクライアントには公開されません。また、サーバー上のブラウザーに変更がある場合、発行イベントはクライアントにプッシュされません。
コントローラー公開コード:
def publish(channel, data)
message = {
:channel => channel,
:data => data,
:ext => {:faye_token => FAYE_OUTGOING_AUTH_TOKEN}
}
uri = URI.parse('http://localhost:9292/faye')
Net::HTTP.post_form(uri, :message => message.to_json)
end
faye を実行するコマンド:
rackup faye.ru -s thin -E production -d
例:
A: サーバー、B: クライアント 1、C: クライアント 2
AB と C は同じネットワーク内の異なるコンピューターであり、すべて同じチャネルにサブスクライブしています。
- Bにデータを入力すると、Aにはデータが表示されますが、ページを更新するまでCにはデータが表示されません(データベースからデータを取得しています)。
- A でデータを入力すると、他のクライアントに公開されません。
- C と B のみがサブスクライブしているチャネルに C のデータを入力すると、C のみがデータを参照でき、B には公開されません。
A、B、および C が同じコンピューター上の異なるブラウザーである場合、上記のすべてのケースが機能します。
これを開発モードで実行し、WEBrick、Unicorn、Thin を試しました。
どんな助けでも大歓迎です。ありがとう。