古いSDKバージョンを使用しているようです。私は単にその
PNConfiguration pnConfiguration = new PNConfiguration();
pnConfiguration.setSubscribeKey(youKey);
pnConfiguration.setReconnectionPolicy(PNReconnectionPolicy.LINEAR);
pubnub = new PubNub(pnConfiguration);
pubnub.addListener(this);
pubnub.subscribe()
.channels(Arrays.asList(channel))
.execute();
PNReconnectionPolicy.LINEAR
のようにそれを実装した最新1 4.3.0
で試してみてくださいすると、切断しているときに自動的に再接続してメッセージを受信すると便利です(そしてそれがたくさん起こります)
をその後、私のクラスSubscribeCallback
を次のように実装します。
@Override
public void unsubscribeAndDisconnect() {
pubnub.destroy();
}
@Override
public void status(PubNub pubnub, PNStatus status) {
switch (status.getCategory()) {
case PNConnectedCategory:
logger.debug("Pubnub Connected");
break;
case PNReconnectedCategory:
logger.debug("Pubnub reconnected");
break;
case PNDisconnectedCategory:
logger.debug("Pubnub disconnected");
break;
case PNUnexpectedDisconnectCategory:
logger.debug("Pubnub Unexcpected disconnect");
pubnub.reconnect();
break;
case PNTimeoutCategory:
logger.debug("Pubnub Timeout");
pubnub.reconnect();
break;
default:
logger.debug("Pubnub " + status.getCategory().name());
break;
}
}
@Override
public void message(PubNub pubnub, PNMessageResult message) {
if (message.getMessage() != null) {
String msg = message.getMessage().toString();
//do what you want with the received message
}
}
@Override
public void presence(PubNub pubnub, PNPresenceEventResult presence) {
//not used in my case
}
@Override
public void unsubscribeAndDisconnect() {
pubnub.destroy();
}
これはそれです。遅延が多分あなたがメッセージを送る場所から来るかもしれないかどうか見るために彼らのデバッグコンソールを使用するようにしてください。
PubNub Android SDKの古いバージョンを使用しています。ありがとう! –
明確にするために、再接続呼び出しはどのような形式のメッセージとしてカウントされませんか?メッセージの使用許可を使い切らずに再接続するまでループするのは安全ですか? – Calco