0

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

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

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

现在我想在phoenix中实现实时更新和频道是合适的。如果我有一个带有 topic 的频道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);
        })
    });
4

1 回答 1

0

(作者:@schrockwell 在 Slack 的#phoenix 频道上)

创建一个“item_updates”通道,然后像这样向它推送消息{item_id: 1, changes: ...}

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

(我认为它应该可以工作。很快就会测试它。)

于 2017-12-11T16:47:13.037 回答