在線統(tǒng)計用戶就100多個人,但連接卻有1300多個,連接不是自動銷毀的么,如果客戶端非正常斷開鏈接會殘留的么。是不是要加心跳。socket-io的心跳要怎么加。。。
長連接必須加心跳的呀。
至于怎么加,實現(xiàn)方式有很多的。
比如服務(wù)端 on connection 的時候設(shè)置一個定時器,每 30 秒查詢上次心跳時間,如果超過一定時間,則判定用戶已離線,將其 disconnect。
而客戶端 on connect 的時候也設(shè)置一個定時器,每 29 秒發(fā)送一個心跳指令。服務(wù)端收到之后更新心跳時間。
sockeio 在客戶端連接的過程中,一般會發(fā)起好幾個網(wǎng)絡(luò)連接(HTTP 請求),最終會得到并保持一個 WebSocket 長連接,這個長連接是有 ping 的,所以應(yīng)該不存在殘留的問題。
$io->worker->connections 并不嚴(yán)格對應(yīng)每個客戶端,如果你的客戶端頻繁重連 socketio 的話,產(chǎn)生的網(wǎng)絡(luò)連接數(shù)是會多一些的。不過你這個也多太多了……