最近參與了一個物聯網的項目,場景:有多台設備通過tcp與服務器連接,要求客戶在遠程用網頁對設備進行管理。網頁不直接控制硬件,而是将服務器當成一個中轉站。網頁發出指令,送到服務器,服務器再将這些指令送到相應的設備,反之亦然,設備将指令發送至服務器,服務器再将設備指令推送到網頁。
圖片有點醜,将就看哈
筆者負責網頁端與遠程服務器交互。因為指令的傳送要求快速、即時,所以筆者選用的基本構架是php socket redis。經過兩天的時間,基本流程已經實現,網頁端與服務端做到了實時交互。下面就把基本思路寫一下,希望能起到抛磚引玉的作用。
實現方案:
1、網頁端通過websocket與PHP後台交互
2、後台可使用swoole或workerman,我這裡使用workerman
3、将網頁端收到的指令存入緩存(redis鍵client。緩存可采用本地緩存或redis,速度上差不多。這裡選用redis,方便運用隊列和将來升級)
4、将緩存client值,通過php擴展 socket 傳到遠程服務器(socket_write)
5、接收遠程服務器的指令(socket_read),存入緩存(redis鍵server)
6、将緩存過的server值,即遠程服務器的指令,傳到網頁端
7、反過來是一樣的,遠程服務端的指令,可即時推送到網頁端
另外在網上看到一個用PHP實現網頁直接操作硬件串口的基本思路:實現方案:
1.網頁端通過websocket與php後台服務交互
2.php後台接收指令操作串口,發送16進制指令給硬件設備
3.php後台将硬件設備返回值通過websocket,傳遞給網頁端
4.網頁端接收推送消息,顯示在頁面上。
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!