多个独立的 websockets 连接
Posted
技术标签:
【中文标题】多个独立的 websockets 连接【英文标题】:multiple independent websockets connections 【发布时间】:2021-03-16 20:08:03 【问题描述】:我一直在玩 django 频道 + 角度。我创建了一个应用程序,它只是通过计数器 1、2、3、4 向前端发送通知。它工作正常,除非我在多个选项卡中打开页面。我也无法断开与 websocket 的连接,我可以使用取消订阅,但它并没有真正关闭连接,但这更像是一个角度问题。无论如何,我怎样才能使我的套接字多线程,所以如果我从同一台计算机但从不同的选项卡发出多个请求,它将起作用,因此将创建 2 个不同的消费者实例,如果我在同一台计算机上加载 2 个页面,计数器应该不同的独立增加计数器。我需要 redis 吗?
【问题讨论】:
你想要的是默认行为。如果您从每个选项卡中的角度侧创建单独的连接,那么您将在 Django 侧具有单独的连接。当前打开单独的选项卡时究竟会发生什么?你应该对你的问题提出质疑。至于 Redis,您将需要一个正常运行的 Channel 层(Redis、Rabbit-MQ 等)来实现跨不同服务器实例的群组消息传递以及 Channels 中的其他内容,但不是专门为此 当我打开 2 个选项卡时,其中一个将冻结,前端实际上不会收到任何内容,似乎从服务器发送的两条消息都转到了最近打开的页面。只允许一个连接。我在本地运行它也许这是导致问题的原因? 【参考方案1】:我的 url 路由器丢失了 .as_asgi() 这有效:
URLRouter([path('wscrawpredict', CrawPredictConsume.as_asgi(),name="wscraw")])
【讨论】:
以上是关于多个独立的 websockets 连接的主要内容,如果未能解决你的问题,请参考以下文章