網(wǎng)頁(yè)使用push插件鏈接websocket,后端只用來(lái)統(tǒng)計(jì)在線人數(shù)問題
微信內(nèi)打開網(wǎng)頁(yè),然后直接將微信至于后臺(tái)運(yùn)行,過幾秒后運(yùn)行php start.php connections發(fā)現(xiàn)websocket已經(jīng)斷開鏈接,而$result = $api->get('/channels')返回的數(shù)據(jù)時(shí)好時(shí)壞,好的時(shí)候應(yīng)該無(wú)在線用戶,壞的時(shí)候就顯示還有用戶在線,當(dāng)壞的時(shí)候就會(huì)導(dǎo)致此用戶一直在線,不管此用戶再次打開網(wǎng)頁(yè)然后關(guān)閉,都會(huì)導(dǎo)致此用戶無(wú)法下線。
這問題糾結(jié)很久了只是一直沒找到原因復(fù)現(xiàn),比如某天一共幾十人在線,后面就一直卡起10多人一直在線未離線
心跳的原理是前端發(fā)送給后端,后端然后響應(yīng),有沒得撒辦法后端主動(dòng)發(fā)起心跳判斷前端是否在線然后斷開鏈接,但是新的問題就是如果前端在線人數(shù)很多的話后端不是忙死了
還是那個(gè)大屏項(xiàng)目么?
有問題的時(shí)候直接用腳本手動(dòng)調(diào)用接口 $api->get('/channels') 查看在線數(shù)。
排除你大屏顯示在線數(shù)代碼有什么bug。
就是那個(gè)大屏,我專門寫了個(gè)接口只返回$api->get('/channels')數(shù)據(jù)用于跟 php start.php connections的數(shù)據(jù)對(duì)比,問題是這兩個(gè)數(shù)據(jù)都對(duì)不上
大屏的在線人數(shù)也是直接 $api->get('/channels') 出來(lái)的所以不會(huì)出錯(cuò)
我專門錄了個(gè)視頻復(fù)現(xiàn)問題總長(zhǎng)4分鐘:http://hbjskangyang.com/webman.mp4 老大又空就看哈,沒空的話我自己在研究研究