只需要兩個PHP檔案即可在雲端伺服器上實現物聯網通訊閘道。
允許使用者在世界任何可以存取網路的角落對控制器進行程式設計、控制和查看控制器的狀態。
我使用了swoole網路通訊引擎作為網關的框架,並創建了一個tcp伺服器以及一個websocket伺服器。
控制器和第3方軟體作為tcp客戶端連接tcp伺服器,而用戶開啟的網頁作為websocket客戶端連接websocket伺服器,兩者都保持長連線。
網關的PHP程式碼建立一個表格來儲存控制器、網頁、主機軟體和其他客戶端的連接訊息,包括客戶端ID、socket的檔案描述符fd等;
控制器與雲端伺服器上的tcp伺服器建立tcp連接,並定期向tcp伺服器發送心跳訊息。 tcp伺服器收到封包後解析出封包中的來源位址,並將tcp連線的fd以及來源位址儲存到表中
使用者開啟網頁後,javascript腳本與websocket伺服器建立tcp連接,同時從網頁上輸入的控制器程式碼產生一個隨機的uuid作為來源位址作為目標位址,產生控制封包傳送給websocket伺服器,websocket伺服器收到後分析該封包的來源位址和目的位址,然後根據目的位址和來源位址向tcp伺服器發送心跳封包。 websocket伺服器收到訊息後,解析訊息中的來源位址和目的位址,根據目的位址從表中找到目的位址對應的tcp連接,並透過這個連接將訊息轉發給控制器。
同時定義了雲端伺服器的uuid,用於控制器、網頁等與伺服器的交互,用於從雲端伺服器同步時間,以及保存狀態到mysql資料庫等功能。
這兩個PHP文件,總共約500行程式碼,相當簡單。
以上是如何基於swoole設計雲端物聯網網關的詳細內容。更多資訊請關注PHP中文網其他相關文章!