我正在尝试使用Django通道和模板来实现身份验证。我知道官方网站上有一个身份验证部分,但是我对套接字是有疑问的,套接字是通过模板在客户端创建的。
根据我的理解,Django模板是多页应用程序,因此,如果我在login.html
中创建一个套接字,则该套接字将在main.html
中断开连接,并且我已经看到了它的发生。
即使我导航到其他页面,有没有办法使套接字保持活动状态?
答案 0 :(得分:1)
您不能在页面之间保持套接字有效。 socket
的连接是持久的,直到从客户端或服务器端将其关闭为止。
当您从一页login.html
移至另一页main.html
时,连接已关闭,您需要恢复该连接。
套接字的工作模型:
Socket
是一个持久连接,您可以在其中进行实时通信。
Room
由一组 Sockets
组成。
当 Socket
订阅 Room
时,它可以收听该 {{ 1}} 。也就是说,当有人在那个房间里发送数据时,所有监听它的套接字都会接收到它。
因此,您要保留此 Room
唯一的详细信息,例如:对于Room
,您可以拥有user1
。
当room1
尝试使用user1
连接到服务器时,您对他进行身份验证并将他的socket1
订阅/注册到socket1
。
类似地,当您将页面更改为room1
时,您将创建main.html
并根据用户身份再次将其订阅到socket2
。