Как переподключиться в Pubnub? - PullRequest
1 голос
/ 06 апреля 2020

Я использую PubNub для передачи уведомлений по моему Js коду. Я не могу понять, как переподключиться в PubNub, когда inte rnet отключается и возвращается.

с восстановлением: true в моем init и выполнением

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); 

SDK: 4.27.2

ожидание: попытаться переподключить попытки PubNub max N), подписаться на существующие подписанные каналы.

Ответы [ 2 ]

1 голос
/ 09 апреля 2020
this.pubnub = new PubNub({
        subscribeKey: this.serverDetails.authInfo.subscribeKey,
        authKey: this.serverDetails.authInfo.authKey,
        uuid,
        restore:true,
        ssl: true,
    });

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

this.pubnub.addListener(this.listeners);

Должно работать.

1 голос
/ 06 апреля 2020

Глядя на это, вы, возможно, получаете какой-то другой ответ о статусе, который вы не проверяете ... Также я думаю, что вам потребуется флаг autoNetworkDetection, чтобы объявить, когда сеть отключена или работает, используя состояния PNNetworkDownCategory и PNNetworkUpCategory. то есть

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);
    } 
  }
};

Если это не помогло, но у вас по-прежнему возникают проблемы с переподключением, вы должны установить флаг listenToBrowserNetworkEvent на false, поскольку это позволяет протоколу переподключения SDK c вступить во владение. т.е.

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

...