2017-12-11 13 views
0

いくつかのユーザー、たとえば100人がいるとします。各ユーザーは、100個のアイテムを持ち、その割合は他のユーザーによってユーザーに共有されています。各項目には名前があります。何百ものトピックについて、フェニックスチャンネルを設定するにはどうすればよいですか?

だから私は、user1のitem1の名前を編集すると、item1を持つすべてのユーザーを更新する必要があります。

私はすでに必要なアクセス許可を設定していますが、REST APIはコントローラで動作しています。

今、私はフェニックスのリアルタイムアップデートとチャンネルを実装したいと思います。トピックitem:*のチャンネルがある場合は、すべてのユーザーのすべての項目を考慮することができます。

したがって、item1、item2、item3 ....、item100のuser1がある場合。リスナーをjavascript側でどのようにセットアップしますか?これが正しいアプローチだとは思わない?

誰かが構造を教えてくれますか?ありがとう!

更新:次のアプローチは有効ですか?

forEach(function(items, val) { 

     var topic = "item:" + val 
     // Join the topic 
     var channel = socket.channel(topic, {}) 

     channel.join() 
      .receive("ok", data => { 
       console.log("Joined topic", topic) 
      }) 
      .receive("error", resp => { 
       console.log("Unable to join topic", topic) 
      }) 

     channel.on("name_changed", resp => { 
      console.log("name was changed of this item", resp); 
     }) 
    }); 
+0

なぜ試して結果を投稿しないのですか?私はあなたがそれぞれの反復で 'channel'を上書きしているので動作しないと思うが... –

答えて

0

(スラックの#phoenixチャネル上@schrockwell別)

シングル「item_updates」チャンネルを作成し、その後、サーバ側で、その後{item_id: 1, changes: ...}

のようにそれにメッセージをプッシュし、そのチャネルに発信ハンドラを登録して、ユーザが知ることができる項目の更新を取得するだけです。

(これはすぐに試してみてください)

関連する問題