Java 未调用timeToken的successCallback
我在下面编写了一个简单的程序,使用Java中的pubnub接收消息。我面临的问题是无法检索所接收消息的Java 未调用timeToken的successCallback,java,pubnub,Java,Pubnub,我在下面编写了一个简单的程序,使用Java中的pubnub接收消息。我面临的问题是无法检索所接收消息的timetoken。尽管API中存在此回调,但从未调用它 @Override public void successCallback(String channel, Object message, String timeToken){ System.out.println("SUBSCRIBE : " + channel +
timetoken
。尽管API中存在此回调,但从未调用它
@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();
}
}
}
您可以通过自己构建java sdk jar并更改文件PubnubCore.java并将行号2617更改为以下内容来轻松获取timetoken:
if (!isWorkerDead(hreq))
callback.successWrapperCallback(channel, PubnubUtil.parseJSON(message), timeToken);
然后再次构建pubnub jar
然后你可以打电话
@Override
public void successCallback(String channel, Object message, String timetoken) {
System.out.println("PUBNUB:"+channel + " : "
+ message.getClass() + " : " + timetoken+" : "+message.toString());
}
如果您想跳过此过程,我可以共享更新的jar。此API已添加到最新的PubNub Java SDK v3.7.2(或更高版本)中。
订阅上的TimeToken作为标识符不可靠,因为它是一个移动的目标,并且会根据客户端连接而更改。您在代码中使用TimeToken的目的是什么?根据您的用例,有一些最佳实践选项可用;-)请联系我们support@pubnub.com因此,我们可以更好地了解您试图实现的目标,并指导您走向成功(通过对客户端的修复、现有功能或解决方法)。如果我记得的话,此successcallback过去通常与所有subscribe调用一起调用。我升级到3.7.0,它不再工作了。