我有一些远程设备与在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