[英]Django Channels. How to respond to a WebSocket open request with a subprotocol?
[英]How to pass request over Django channels WebSocket and call Django view
我正在使用Django处理单页应用程序,并且想使用WebSockets,因此要使用Channels。 为简单起见,我想我想仅通过WebSocket处理所有服务器通信,而不是在混合中添加XHR(XML HTTP请求)。 我从一开始就使用通道,因为会有很多数据从服务器异步推送到客户端。
对于常规Django,通常会向https://example.com/login或https://example.com/logout或其他内容发出请求,而Django URL路由器将决定将其发送到哪个视图。 相反,我希望用户在客户端中执行其操作,使用Javascript处理它,并使用WebSocket将请求发送到服务器。 由于我使用的是Django-allauth,因此我想使用提供的Django视图来处理身份验证之类的事情。 然后,服务器将使用视图中的必要状态信息更新客户端。
我的问题 :如何处理通过WebSocket接收的数据并将HTTP请求提交到Django视图? 然后,我的频道使用者将获取呈现的HTML,并将其发送回客户端以更新页面或部分。
我可以想象使用XHR会发生什么,但是我试图避免将两者混为一谈,除非有人能指出使用XHR和WebSockets的有用性……? 我想另一个选择是使用XHR进行身份验证和其他客户端发起的请求,并使用WebSocket异步更新客户端。 这一点有意义吗?
更新 :在我看来,我可以使用来自PyPi的requests
,并使用通过WebSocket收到的凭据对本地主机进行sync_to_async
调用。 但是,这将需要我处理会话数据并将其发送回客户端。 这似乎需要做很多工作。 也就是说,我可以将会话本身保留在服务器上,而只需将它们与WebSocket连接本身相关联即可。 由于我使用的是安全的WebSocket wss://
是否有可能劫持WebSocket连接?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.