【问题标题】:How to setup a phoenix channel for say hundreds of topics?如何为数百个主题设置凤凰频道?
【发布时间】:2017-12-11 12:26:29
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您为什么不尝试一下并发布结果?我想它不会起作用,因为你在每次迭代时都会覆盖 channel 但是......

标签: elixir phoenix-framework phoenix-channels


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 2017-10-08
    • 2021-01-29
    • 1970-01-01
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多