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