Я написал простую программу ниже, чтобы получать сообщения, используя pubnub в Java. Проблема, с которой я столкнулась, заключается в том, что я не могу получить timetoken
полученного сообщения. Этот обратный вызов не вызывается, хотя она существует в APIsuccessCallback с timeToken не называется
@Override
public void successCallback(String channel, Object message, String timeToken){
System.out.println("SUBSCRIBE : " + channel + " : " + message.getClass() + " : " + message.toString());
System.out.println(timeToken);
}
Обратный вызов без timetoken
называется, хотя. Может кто-нибудь сказать мне, как я могу получить timetoken сообщения.
import java.io.IOException;
import com.pubnub.api.*;
import org.json.*;
public class Main{
public static void main(String[] args){
Pubnub pubnub =
new Pubnub("demo", "demo");
pubnub.setUUID("1");
try{
pubnub.subscribe("test", new Callback(){
@Override
public void connectCallback(String channel, Object message){
System.out.println("SUBSCRIBE : CONNECT on channel:" + channel + " : " + message.getClass() + " : "
+ message.toString());
}
@Override
public void disconnectCallback(String channel, Object message){
System.out.println("SUBSCRIBE : DISCONNECT on channel:" + channel + " : " + message.getClass() + " : "
+ message.toString());
}
public void reconnectCallback(String channel, Object message){
System.out.println("SUBSCRIBE : RECONNECT on channel:" + channel + " : " + message.getClass() + " : "
+ message.toString());
}
@Override
public void successCallback(String channel, Object message){
System.out.println("SUBSCRIBE : " + channel + " : " + message);
}
@Override
public void successCallback(String channel, Object message, String timeToken){
System.out.println("SUBSCRIBE : " + channel + " : " + message.getClass() + " : " + message.toString());
System.out.println(timeToken);
}
@Override
public void errorCallback(String channel, PubnubError error){
System.out.println("SUBSCRIBE : ERROR on channel " + channel + " : " + error.toString());
}
});
pubnub.history("akosha1", 100, new Callback(){
public void successCallback(String channel, Object response){
System.out.println(response.toString());
}
public void errorCallback(String channel, PubnubError error){
System.out.println(error.toString());
}
});
try{
System.in.read();
} catch (IOException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (PubnubException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
TimeToken on Subscribe не является надежным в качестве идентификатора, поскольку он является движущейся целью и будет меняться в зависимости от клиентских подключений. Что вы используете в своем коде TimeToken? Есть несколько вариантов лучшей практики в зависимости от вашего случая использования ;-) – PubNub
Пожалуйста, свяжитесь с нами по адресу [email protected], чтобы мы могли лучше понять, что вы пытаетесь выполнить, и можете помочь вам добиться успеха (либо через исправление на клиенте, существующая функциональность или обходной путь). – Geremy
Этот случай успеха всегда вызывался со всеми вызовами подписки, если я помню. Я обновился до 3.7.0, и он больше не работает. –