【问题标题】:multiple independent websockets connections多个独立的 websockets 连接
【发布时间】:2021-03-16 20:08:03
【问题描述】:

我一直在玩 django 频道 + 角度。我创建了一个应用程序,它只是通过计数器 1、2、3、4 向前端发送通知。它工作正常,除非我在多个选项卡中打开页面。我也无法断开与 websocket 的连接,我可以使用取消订阅,但它并没有真正关闭连接,但这更像是一个角度问题。无论如何,我怎样才能使我的套接字多线程,所以如果我从同一台计算机但从不同的选项卡发出多个请求,它将起作用,因此将创建 2 个不同的消费者实例,如果我在同一台计算机上加载 2 个页面,计数器应该不同的独立增加计数器。我需要 redis 吗?

【问题讨论】:

  • 你想要的是默认行为。如果您从每个选项卡中的角度侧创建单独的连接,那么您将在 Django 侧具有单独的连接。当前打开单独的选项卡时究竟会发生什么?你应该对你的问题提出质疑。至于 Redis,您将需要一个正常运行的 Channel 层(Redis、Rabbit-MQ 等)来实现跨不同服务器实例的群组消息传递以及 Channels 中的其他内容,但不是专门为此
  • 当我打开 2 个选项卡时,其中一个将冻结,前端实际上不会收到任何内容,似乎从服务器发送的两条消息都转到了最近打开的页面。只允许一个连接。我在本地运行它也许这是导致问题的原因?

标签: python django angular websocket django-channels


【解决方案1】:

我的 url 路由器丢失了 .as_asgi() 这有效:

URLRouter([path('wscrawpredict', CrawPredictConsume.as_asgi(),name="wscraw")])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多