我有一些遠程設備與在Docker容器中的數字海洋Ubuntu 14.04液滴上運行的中央Meteor應用程序進行通信。每個設備都有自己的通道,服務器訂購了所有通道,以及所有設備通用的「遙測」通道。一切都可以正常工作(幾天到幾周),但是當發送消息(消息顯示在PubNub調試控制檯中)時,服務器上的訂閱回調將停止觸發。服務器可以正常發佈。我重新啓動服務器後,訂閱再次正常工作。以下是相關的代碼片段:Pubnub訂閱在一段時間後停止接收消息
pubnub = new PubNub({
publishKey: "pub-key",
subscribeKey: "sub-key"
});
pubnub.addListener({
message: function (m) {
console.log(m.channel);
console.log(m.message);
console.log(m.timetoken);
console.log(m.subscription);
if (m.channel == "telemetry") {
handleTelemetry(m);
} else {
handleRequest(m);
}
},
error: function (error) {
// Handle error here
console.log(JSON.stringify(error));
}
});
pubnub.subscribe({
channels: chans //chans is a list of channels
});
是否有某種停止訂閱服務的默認超時?如果是這樣,我該如何禁用它?
通過參考看,我發現這個值,我可以傳遞給初始化,但我不知道它是否與我有關。
我運行一個測試,現在在我的開發服務器presenceTimeout設置爲0,它的工作,但它的重建,因爲它可能需要很長的時間來彈出,所以如果一個非常困難的問題任何人有任何洞察到這個問題,將不勝感激。我會每週更新一次測試結果。
現在我在生產中的臨時修復是讓cron每天重新啓動服務器,這對我來說並不是很理想。
更新17年2月15日
難道啓用了Pubnub的調試日誌測試。它再次停止工作。以下是日誌的最後幾行。
的心跳似乎在正常地到來。我重新檢查日誌,然後重新啓動它,另一個日誌記錄在6:44 utc。 6點39分之後心跳後的對象是成功發佈到我的設備之一的消息。有任何想法嗎?
您可以看到完整的日誌here。我的代碼中的日誌格式不是很好,所以請原諒。
薩姆嗨!這聽起來像一個SDK錯誤。我們正在審查。 – PubNub
我們的團隊正在通過Node.JS – PubNub
查看有關您的Digital Ocean設置的詳細信息存在超時'0'是一個大問題。您應該省略此設置。本質上,一個'0'超時會告訴PubNub客戶端是** 100%離線**並處於「連接到網絡」的恆定狀態。 – PubNub