項(xiàng)目背景:自動(dòng)售貨機(jī),自動(dòng)售貨機(jī)可以設(shè)定服務(wù)IP 端口 心跳間隔(只能設(shè)定最小間隔為60s 目前就是設(shè)定的60s)
服務(wù)端:gatewayworker [php start.php start -d啟動(dòng)、pingInterval =70 && pingNotResponseLimit = 1、啟動(dòng)之后workerman.log無(wú)報(bào)錯(cuò)信息 整體服務(wù)正常]
問題:機(jī)器主板發(fā)送心跳給服務(wù)端 機(jī)器主板固定心跳間隔不得小于60秒 目前主體正常 但是每20分鐘左右client_id(服務(wù)端會(huì)話id)都會(huì)發(fā)生變化 導(dǎo)致機(jī)器不能出貨 因?yàn)閿嚅_長(zhǎng)連接了 拿到的那個(gè)存儲(chǔ)的client_id無(wú)效 有沒有好的方法可以保持盡量不在70秒的時(shí)候長(zhǎng)連接就掛了
不要存client_id,client_id是連接id,連接斷開就沒有用了,不要指望連接能一直維持不斷,那不現(xiàn)實(shí)。
使用Gateway::bindUid($client_id, 設(shè)備id)
將client_id和設(shè)備id綁定,利用 Gateway::sendToUid(設(shè)備id, 數(shù)據(jù))
給設(shè)備發(fā)送數(shù)據(jù)。這樣就不用擔(dān)心client_id變化問題。
設(shè)備心跳間隔最好小于60秒,因?yàn)橥饩W(wǎng)環(huán)境復(fù)雜,有些路由節(jié)點(diǎn)可能會(huì)清理60秒不活躍的連接導(dǎo)致連接斷開。
我的也是頻率更快 client_id連接幾次就更換了,現(xiàn)在在測(cè)試階段。在本機(jī)。心跳在30秒
@1393:我的是一直連接的,感覺是沒有斷開的,從時(shí)間上可以看出來,可能網(wǎng)絡(luò)波動(dòng)吧,我把心跳包頻率設(shè)置30s,好像沒啥用。