2017-02-18 1 views
0

パブリックIPアドレスで接続を識別します。最近(理解していない)私が理解していることは、そのような場合、クライアントがチャネルを購読すると、同じChannelインスタンスが再利用されるということです。次のようにActionCable Channelsインスタンスはクライアント間で共有されますか?

現実世界の例は次のとおりです。

私は私が所有していない特定のソースからの情報を要求するアプリを構築しています。これは、HTTP要求とジョブによって行われます。定期的な間隔で外部リソースが変化します。

ApplicationCable :: Channelから継承したMy DataChannelクラスは最後のリクエストのキャッシュを管理しているため、同じIPアドレスから購読した新規クライアントは新しいリクエストを開始せず、最後のリクエストを再利用します。

は総括:

を私はチャンネルに2つのタブと、それぞれ1つのサブスクライブを開いた場合、接続識別子が同じであっても、私は2つのチャンネルのインスタンスを取得できますか?

私はそうするための方法を模索していません。正しい方向に向けるだけで、実際にははるかに価値があります。

+0

私は開発環境にいるので、そうではないようですが、私はそれを実動でテストします。 私がやりたかったこととして、私はRedis DLMを使い終わった。 – 42linoge

答えて

0

いいえ、そうではありません。

IPアドレスで識別される接続を持つクライアントが所有するすべてのインスタンス間の同期を追加する必要がありました。

このため、私はRedis DLMを使用していましたので、ロックを取得して解放し、ユニークであるように意図された計算を実行できました。

もっと良い方法があるかもしれませんが、私はActionCableソースにパッチを当てる必要がないとは思いませんでした。それ以上のコメントはいつものように評価されます。

関連する問題