目前的設(shè)計(jì)思路:使用GatewayWorker開(kāi)發(fā)的一個(gè)簡(jiǎn)單物聯(lián)網(wǎng)服務(wù)端,通過(guò)TCP連接硬件,通過(guò)WebSocket連接網(wǎng)頁(yè)端,硬件發(fā)送數(shù)據(jù)到服務(wù)端,服務(wù)端收到后立即轉(zhuǎn)發(fā)網(wǎng)頁(yè)端。
但是按照這種模式設(shè)計(jì),服務(wù)端開(kāi)啟后TIME_WAIT數(shù)飆升很高,只連接一個(gè)設(shè)備就達(dá)到2萬(wàn)多。設(shè)備發(fā)送數(shù)據(jù)頻率挺高,大概1秒鐘10-20次。
代碼如下:
請(qǐng)教各位大佬,這個(gè)設(shè)計(jì)思路是否有問(wèn)題,應(yīng)該如何改進(jìn)。
一個(gè)onMessage循環(huán)調(diào)用這么多接口。。。除了發(fā)送接口,其它接口感覺(jué)沒(méi)必要去調(diào)用
$myUid = Gateway::getUidByClientId($client_id);
這個(gè)改成用$_SESSION['uid']
記錄client_id對(duì)應(yīng)的uid,獲取的時(shí)候直接用$_SESSION['uid']
獲取。
改成
$uid_array = [];
foreach($forwords as $v) {
$uid_array[] = "$v-Uid";
}
Gateway::sendToUid($uid_array, json_encode(...));
也就是說(shuō)你截圖里的代碼除了Gateway::sendToUid接口,其它Gateway接口沒(méi)必要調(diào)用。
好的 調(diào)用過(guò)多Gateway接口的話 會(huì)影響TIME_WAIT數(shù)嗎