心跳包實現的另一種機制


因為工作關系,經常用到心跳包。之前是在服務端中的連接的實體中保持一個timer,每秒加一,每次服務端接到客戶端的心跳,就會把計數置為0。 當累加到20秒的時候,服務端會接到客戶端拋出的掉線函數回調,就會視為客戶端掉線,然后從緩存中刪掉掉線用戶。

實際測試結果表明,這種判斷掉線的方式非常靠譜。7*24小時運行不會出現任何異常。但是每個實體保持一個timer,服務器的開銷太大了。

所以這里我想到一種方式,就是在實體中包含一個 DateTime LastReceiveHeartBeatTime字段,每當客戶端來了心跳,服務端就會將這個字段更新一次。

然后服務端只需要開一個timer,每隔20秒鍾巡查一次實體中的這個字段和當前時間的差值,即可來判斷設備是否掉線。

這樣就大大的減小了服務端的負擔。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM