Java 未调用timeToken的successCallback

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 +

我在下面编写了一个简单的程序,使用Java中的pubnub接收消息。我面临的问题是无法检索所接收消息的
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,它不再工作了。