分析dwebsocket的原始碼過程

2022-04-12 04:02:54 字數 1075 閱讀 1552

本章是對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.

總結:大致整個流程是這個樣子。

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

source insight分析WRK原始碼

左邊一欄是風格名,選中的是當前游標下的風格名,這些風格之間是有繼承關係的,可以看到有很多 號,這代表繼承了父風格 parent style pick則是讓你單獨設定,最右邊還可以匯入 匯出 新增風格等。所有風格最終由default text繼承而來的,font name是灰的,它由document ...

Soul原始碼分析 soul admin原始碼分析

頁面操作原始碼分析 public int createorupdate final selectordto selectordto else publishevent selectordo,selectorconditiondtos return selectorcount 與soul bootst...

ConcurrentHashMap的原始碼分析

put final v putval k key,v value,boolean onlyifabsent 在上一步的else if中 f 不為null時,則判斷f的hash值是否為moved,即 1,如果為 1,表示正在擴容 else if fh f.hash moved 協助資料遷移 tab h...