如何建立凤凰频道说几百个主题?

时间:2017-12-11 12:26:29

标签: elixir phoenix-framework phoenix-channels

假设有一些用户,比如说100个。每个用户都有100个项目,其中一个百分比由其他用户共享给用户。每个项目都有一个名称。

所以...我想要的是,如果我编辑user1的item1的名称,它应该更新所有拥有item1的用户。

我已经设置了必要的权限,REST api正在通过控制器工作。

现在我想实现实时更新,凤凰中的频道是合适的。如果我有一个主题为item:*的频道,我可以考虑所有用户的所有项目。

所以,如果有一个user1,其中包含item1,item2,item3 ....,item100。如何在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);
        })
    });

1 个答案:

答案 0 :(得分:0)

(来自Slack的#phoenix频道的@schrockwell)

创建一个“item_updates”频道,然后将消息推送到{item_id: 1, changes: ...}

然后在服务器端,在该频道上注册一个传出处理程序,以便用户只获取他们有权知道的项目的更新。

(我认为它应该可行。即将进行测试。)