DTU心跳包實(shí)際上是一個(gè)與服務(wù)器長(zhǎng)連接的機(jī)制包。一般來(lái)說(shuō),如果一段時(shí)間沒(méi)有與服務(wù)器通信,服務(wù)器會(huì)主動(dòng)斷開(kāi)并斷開(kāi)DTU之間的數(shù)據(jù)連接。如果客戶想長(zhǎng)期與服務(wù)器保持連接,只能使用心跳包,DTU在網(wǎng)絡(luò)空閑時(shí),將參數(shù)規(guī)定的數(shù)據(jù)定期發(fā)送到服務(wù)器。
如何設(shè)置心跳包?
一般來(lái)說(shuō),一個(gè)新的DTU在默認(rèn)參數(shù)下,設(shè)備的心跳時(shí)間為0,不會(huì)主動(dòng)將心跳包發(fā)送到服務(wù)器,需要設(shè)置后才能將心跳包發(fā)送到服務(wù)器,那么如何設(shè)置心跳包呢?
1.保持鏈接
當(dāng)DTU處在TCP當(dāng)透?jìng)鳡顟B(tài)連接到服務(wù)器時(shí),如果在一定時(shí)間內(nèi),DTU如果沒(méi)有向服務(wù)器發(fā)送數(shù)據(jù),運(yùn)營(yíng)商會(huì)強(qiáng)制將數(shù)據(jù)發(fā)送給服務(wù)器DTU與服務(wù)器斷開(kāi)。所以在這個(gè)時(shí)候我們的。DTU隨時(shí)發(fā)送一包數(shù)據(jù)作為保持鏈接的條件。如果沒(méi)有心跳斷開(kāi)連接,我們的DTU也會(huì)在幾秒鐘內(nèi)重新連接,相當(dāng)可靠,但設(shè)置心跳可以避免數(shù)據(jù)斷開(kāi)時(shí)丟失。
2.告知數(shù)據(jù)中心DTU還在線
當(dāng)DTU連接到服務(wù)器時(shí),設(shè)置并設(shè)置DTU每分鐘發(fā)送一包數(shù)據(jù),如果服務(wù)器超過(guò)設(shè)定時(shí)間一分鐘未收到DTU服務(wù)器將識(shí)別數(shù)據(jù)DTU已經(jīng)掉線,然后阻礙通信。因此,心跳包可以通知數(shù)據(jù)中心。DTU還在網(wǎng)上。同時(shí),不用擔(dān)心跳包擾亂數(shù)據(jù)。DTU具有心跳避讓功能,同時(shí)上傳數(shù)據(jù),心跳避讓不發(fā)送此信息。
向網(wǎng)絡(luò)端發(fā)送主要目的是為了與服務(wù)器保持連接,和讓長(zhǎng)時(shí)間空閑(很長(zhǎng)時(shí)間內(nèi)不會(huì)向服務(wù)器發(fā)送數(shù)據(jù))的模塊檢測(cè)連接狀態(tài)是否有效。當(dāng)連接異常時(shí),模塊會(huì)檢測(cè)到無(wú)法正常發(fā)送心跳包數(shù)據(jù)到服務(wù)器端,發(fā)送失敗次數(shù)大于3次時(shí),模塊認(rèn)為連接異常,將嘗試重新接入服務(wù)器。
在服務(wù)器向設(shè)備發(fā)送固定查詢指令的應(yīng)用中,為了減少通信流量,用戶可以選擇,用向串口設(shè)備端發(fā)送心跳包(查詢指令),來(lái)代替從服務(wù)器發(fā)送查詢指令。