手上有個物聯(lián)網(wǎng)的項目,應用場景如下:全國各地部署了很多計量表具(GPRS上傳數(shù)據(jù)),現(xiàn)在需要制作一套管理系統(tǒng),實現(xiàn)對這些表具的管理,核心部分有這些要求
1 制作一個展示及管理界面 (以下簡稱A) (這個沒有問題,也與Workerman無關)
2 計劃采用Workerman TCP 長連接模式來管理這些 GPRS客戶端(以下簡稱B)
現(xiàn)在有些沒弄明白的地方
1 每次服務器啟動是否都需要命令行啟動Workerman編寫的后臺程序 B
2 后臺程序 B 是否可以使用一套我自己封裝過的MYSQL類,便于操作MYSQL
3 前臺程序A 與 后臺程序 B 之間的通訊(比如向指定設備發(fā)送消息,這個前面有人問到,但是有個問題沒看明白,因為每個TCP鏈接是有UID的,A如何實時獲取這個UID)
4 后臺程序 B 是否支持對每個TCP鏈接定時發(fā)送數(shù)據(jù)
5 后臺程序B 與GPRS之間的通訊均為一段或長或段的十六進制數(shù)據(jù)(沒有特定的開始或結束標志),這個是不是直接采用標準的TCP協(xié)議就可以
1 每次服務器啟動是否都需要命令行啟動Workerman編寫的后臺程序 B
是的
2 后臺程序 B 是否可以使用一套我自己封裝過的MYSQL類,便于操作MYSQL
可以。
但是需要注意如果mysql鏈接長時間沒有通訊,mysql鏈接會被mysql服務端斷開,客戶端再次使用這個鏈接時會報mysql gone away錯誤。
解決方法大致兩種:
1、使用短鏈接,每個請求處理完畢關閉數(shù)據(jù)庫鏈接。2、判斷下錯誤碼,出現(xiàn)錯誤重連一次mysql
3 前臺程序A 與 后臺程序?。隆≈g的通訊(比如向指定設備發(fā)送消息,這個前面有人問到,但是有個問題沒看明白,因為每個TCP鏈接是有UID的,A如何實時獲取這個UID)
uid是自定義的,可以理解為你設備的全局唯一的名稱或者id
4 后臺程序 B 是否支持對每個TCP鏈接定時發(fā)送數(shù)據(jù)
支持,這是基本的功能。
5 后臺程序B 與GPRS之間的通訊均為一段或長或段的十六進制數(shù)據(jù)(沒有特定的開始或結束標志),這個是不是直接采用標準的TCP協(xié)議就可以
最好有個分辨包大小的標志,tcp有粘包的特性,數(shù)據(jù)如果連在一起可能無法分辨。有時候會出現(xiàn)數(shù)據(jù)還沒接收完全就被處理的情況