Django频道:如何保持套接字有效

时间:2019-12-05 10:26:56

标签: django websocket django-channels

我正在尝试使用Django通道和模板来实现身份验证。我知道官方网站上有一个身份验证部分,但是我对套接字是有疑问的,套接字是通过模板在客户端创建的。

根据我的理解,Django模板是多页应用程序,因此,如果我在login.html中创建一个套接字,则该套接字将在main.html中断开连接,并且我已经看到了它的发生。

即使我导航到其他页面,有没有办法使套接字保持活动状态?

1 个答案:

答案 0 :(得分:1)

您不能在页面之间保持套接字有效。 socket的连接是持久的,直到从客户端或服务器端将其关闭为止。

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

套接字的工作模型

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

Room 由一组 Sockets 组成。

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

因此,您要保留此 Room 唯一的详细信息,例如:对于Room,您可以拥有user1。 当room1尝试使用user1连接到服务器时,您对他进行身份验证并将他的socket1订阅/注册到socket1

类似地,当您将页面更改为room1时,您将创建main.html并根据用户身份再次将其订阅到socket2