首页 > 解决方案 > 如何在 Pubnub 中重新连接?

问题描述

我正在使用 PubNub 在我的 Js 代码中传输通知。一旦互联网断开连接并重新启动,我无法弄清楚如何在 PubNub 中重新连接。

恢复:在我的初始化和执行中为真

this.listeners = {
  message: msgEvent => {
    console.log(msgEvent);
  },
  status: statusEvent => {
    if (statusEvent.category === "PNNetworkUpCategory") {
      this.pubnub.reconnect();
}}};

对我不起作用。

完整代码:

this.pubnub = new PubNub({
  subscribeKey: this.serverDetails.authInfo.subscribeKey,
  authKey: this.serverDetails.authInfo.authKey,
  uuid,
  restore: true
  ssl: true
});

this.listeners = {
  message: msgEvent => {
    console.log(msgEvent);
  },
  status: statusEvent => {
    if (statusEvent.category === "PNNetworkUpCategory") {
      this.pubnub.reconnect();
    }
  }
};

this.pubnub.addListener(this.listeners); 

开发工具包:4.27.2

期望:尝试重新连接 PubNub 最多 N 次尝试),订阅现有订阅频道。

标签: javascriptpublish-subscribepubnub

解决方案


看着它,您可能会收到其他一些您没有检查的状态响应......而且我认为您需要使用autoNetworkDetection标志来宣布网络何时关闭或使用状态PNNetworkDownCategoryPNNetworkUpCategory. IE

this.pubnub = new PubNub({
  subscribeKey: this.serverDetails.authInfo.subscribeKey,
  authKey: this.serverDetails.authInfo.authKey,
  uuid,
  restore: true,
  ssl: true,
  autoNetworkDetection: true
});

this.listeners = {
  message: msgEvent => {
    console.log(msgEvent);
  },
  status: statusEvent => {
    if (statusEvent.category === "PNNetworkUpCategory") {
      this.pubnub.reconnect();
    } else {
      // check for other status events - PNTimeoutCategory, PNNetworkIssuesCategory, etc
      console.log(statusEvent.category);
    } 
  }
};

如果失败并且您仍然遇到重新连接问题,则应将标志设置为 listenToBrowserNetworkEventfalse因为这允许 SDK 重新连接逻辑接管。IE

this.pubnub = new PubNub({
  subscribeKey: this.serverDetails.authInfo.subscribeKey,
  authKey: this.serverDetails.authInfo.authKey,
  uuid,
  restore: true,
  ssl: true,
  listenToBrowserNetworkEvents: false
});

见:https ://www.pubnub.com/docs/web-javascript/pubnub-network-lifecycle#pnnetworkupcategory


推荐阅读