【问题标题】:Django channels get the current channelDjango 频道获取当前频道
【发布时间】:2020-09-05 23:42:06
【问题描述】:

我想将消息保存到我的数据库中,但我想按频道划分它们,目前我从数据库中的其他频道加载消息,我想知道如何获得某个频道的独特信息,以便我可以拥有我的模型中名为 channel 的字段?

编辑:为了详细说明我的问题,有没有办法可以访问房间实例?

【问题讨论】:

    标签: django django-channels


    【解决方案1】:

    如果启用 channel_layers,那么每次创建消费者实例(通道)时,它都会自动实例化一个通道名称。这可以通过 self.channel_name 从消费者内部访问。

    编辑: channel_name 对于频道来说是完全唯一的,这意味着每个连接的客户端都将拥有一个与之关联的唯一频道名称。

    【讨论】:

    • 正确。例如,在我的项目中,当用户打开与我的 Web 应用程序的连接时,会打开一个通道,我将创建的唯一通道名称传递给一个长时间运行的后台任务,然后使用该通道名称将数据发送回用户首先调用长时间运行的任务。
    • 是的,如果您的目标是使用 channel_name 定义每条消息的来源,那将是一种方法。
    • 这里还有一些可能会有所帮助的东西——而不是在用户关闭或刷新窗口时终止连接,而是 ping 一段时间。这意味着如果用户刷新,客户端将在几秒钟内 ping 回来,并且连接不会关闭并重新打开。 stackoverflow.com/questions/61037587/…
    • Pinging 只会帮助避免每次有人刷新页面时创建新频道的问题。如果您 p​​ing 几秒钟,您可以保持相同的连接处于活动状态,避免再次从数据库中提取数据,从而减少数据库的负载。你设置它的方式很好,所以你可以忽略我的第一条评论,但现在有什么问题?你的程序正在加载房间消息 + 用户,所以你达到了你想要的吗?
    • 我想我知道了,我的问题在于您向我解释得很好的频道名称,我从您那里了解了更多有关频道工作方式的信息,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 2018-04-25
    • 2021-05-04
    • 2020-08-12
    • 1970-01-01
    相关资源
    最近更新 更多