分析dwebsocket的源碼過程


 

前言

  dwebsocet 是python django的websocket庫,github地址:https://github.com/duanhongyi/dwebsocket

本章是對dwebsocet的一個源碼分析.

開胃菜

在django視圖里,只需要這么定義,就搭建了一個websocet端。

分析開始

1.打開

accept_websocket 源碼,是這樣。

不要被它嚇到,其實就是動態加載中間介,我們打開紅箭頭處的WebSocketMiddleware,代碼是這樣

數字3 是當一個request請求過來時還沒有到視圖層,就要開始處理,數字1.是動態導入模塊 2.是創建個 socket連接..詳細就不寫了。

現在我們假設websocet連接過來到這個層,已經建立個 socket對象,接下來的步驟就是要接收用戶請求。

process_view 是在視圖前調用,它這的目的就是用鈎子,回調接收socket連接。此時我們應該就可以接收客戶端發過來的數據了。就回到了第一個圖的開胃菜哪。

用for 去取request.websocket對象,很多人應該沒搞清楚,它為什么能無限制的for, 而不被結束。原因在這里

websocket這個對象的父類,寫了個__iter__迭代對象,其實和客戶端用的socket對象道理是一樣的,要保持長連接,你就的while True.

 

總結:

     大致整個流程是這個樣子。

附一張自己分析的草圖,留着自己回憶.

 

 

 

 

 

 

 

 

 
         
         
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM