根據之前的知識點,protocol協議的作用是利用傳輸層提供的傳輸服務,為應用程序提供數據格式交互的
1、前提
worker進程,需要設置協議屬性
-如何設置協議
Worker類中listen方法中,根據$this->_socketName獲取協議參數,對數組static::$_builtinTransports進行鍵值判斷:
如果存在,則上層協議為null,$this->transport = $scheme;
相反則判斷,該協議是否是以\\Protocols\\或者\\Workerman\\Protocols\\ 為命名空間的類
2、Protocols目錄結構
3、協議設計
採用面向接口編程,協議設計主要是確定好數據格式. 但是在協議這塊,workerman框架僅僅是設計規範,具體的實現類並不對接口進行實現
3.1、接口類-ProtocolInterface
- 類概要
- 靜態方法:解釋
- input:用於計算一個協議包的長度
- decode:用於解包
- encode:用於封包
3.2、Text類
採用\\n作為協議的分隔符號,即格式為
內容1\\n內容2\\n
3.3、Frame類
採用包頭+包體的格式,包頭採用二進制,記錄包頭和包體的長度。格式如下:
一個協議包=包頭(二進制)+包體
3.4、Http類
以\\r\\n為分割符號,格式為 報頭\\r\\n報體
細分格式為
請求行\\r\\n頭部信息\\r\\n\\r\\n報體\\r\\n
閱讀更多 iamasb 的文章