人類可以以心跳來證明自己的生命依然在運轉(zhuǎn),服務器可以嗎?那么服務器如何來證明自己還“活著”呢?
其實,服務器也有自己的“心跳”,心跳包是客戶端和服務器間定時通知對方自己狀態(tài)的一個自己定義的命令字,按照一定的時間間隔發(fā)送,類似于心跳,所以叫做心跳包。
網(wǎng)絡中的接收和發(fā)送數(shù)據(jù)都是使用SOCKET進行實現(xiàn)。但是如果此套接字已經(jīng)斷開,那發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的時候就一定會有問題。所謂的心跳包就是客戶端定時發(fā)送簡單的信息給服務器端告訴它我還在而已。代碼就是每隔幾分鐘發(fā)送一個固定信息給服務端,服務端收到后回復一個固定信息如果服務端幾分鐘內(nèi)沒有收到客戶端信息則視客戶端斷開。
在獲知了斷線之后,服務器邏輯可能需要做一些事情,比如斷線后的數(shù)據(jù)清理和重新連接等等,心跳包主要也就是用于長連接的保活和斷線處理,有了它我們就可以判斷服務器到底是在線還是離線了。