【问题标题】:Django Channels: How to keep socket aliveDjango Channels:如何让套接字保持活动状态
【发布时间】:2019-12-05 10:26:56
【问题描述】:

我正在尝试使用 django 频道和模板来实现身份验证。我知道官网有一个认证部分,但是我有一个关于socket的问题,它是在客户端通过模板创建的。

据我了解,django模板是多页应用,所以如果我在login.html创建一个socket,这个socket会在main.html断开连接,我已经看到了。

即使我导航到不同的页面,有没有办法让套接字保持活动状态?

【问题讨论】:

标签: django websocket django-channels


【解决方案1】:

您不能在页面之间保持套接字处于活动状态。 socket 的连接是持久的,直到它从客户端或服务器端关闭。

当您从一页 login.html 移动到另一页 main.html 时,连接已关闭,您需要恢复它。

socket的工作模式

Socket 是一个持久连接,您可以在其中进行实时通信。

Room 由一组 Sockets 组成。

Socket 订阅 Room 时,它可以监听该 Room 中发生的所有通信>。也就是说,当有人在那个房间发送数据时,所有监听它的套接字都会接收到它。

所以,你保持这个 Room 细节是唯一的,例如:对于user1,你可以有room1。 当user1 尝试使用socket1 连接到服务器时,您对他进行身份验证并将他的socket1 订阅/注册到room1

同样,当您将页面更改为main.html 时,您会创建socket2 并根据用户身份再次订阅room1

【讨论】:

    猜你喜欢
    • 2011-07-03
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 2018-11-08
    • 1970-01-01
    • 2020-08-12
    相关资源
    最近更新 更多