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