![](/img/trans.png)
[英]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.