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