2017-12-11 15 views
0

일부 사용자가 있다고 가정 해 봅시다. 예를 들어 100 명이 있습니다. 각 사용자는 100 개의 항목과 다른 사용자가 사용자에게 공유 한 비율을 말합니다. 각 항목에는 이름이 있습니다.수백 개의 주제를 다루는 Phoenix 채널을 설정하는 방법은 무엇입니까?

그래서 ... 제가 원한다면, user1의 item1의 이름을 편집하면 item1을 가진 모든 사용자를 업데이트해야합니다.

필요한 권한을 이미 설정했으며 REST API가 컨트롤러에서 작동합니다.

이제 실시간 업데이트와 피닉스 채널을 구현하고 싶습니다. 주제가 item:* 인 채널이있는 경우 모든 사용자의 모든 항목을 고려할 수 있습니다.

따라서 user1에 item1, item2, item3 ...., item100이있는 경우 어떻게하면 자바 스크립트 측면에서 리스너를 설치합니까? 나는 이것이 올바른 접근이라고 생각하지 않습니까?

누군가 나를 구조 도와 주실 수 있습니까? 감사!

업데이트 : 다음 접근 방식이 적용됩니까?

(슬랙의 #phoenix 채널에 @schrockwell으로)

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

는 하나의 "item_updates"채널을 확인하고 다음 서버 엔드에 {item_id: 1, changes: ...}

처럼 메시지를 밀어 해당 채널에 나가는 처리기를 등록하면 사용자는 알 수있는 권한이있는 항목에 대한 업데이트 만받을 수 있습니다.

는 (나는 그것이 작동한다고 생각합니다. 곧 테스트 간다.)