2014-11-25 2 views
4

Я написал простую программу ниже, чтобы получать сообщения, используя 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(); 
     } 
    } 

} 
+0

TimeToken on Subscribe не является надежным в качестве идентификатора, поскольку он является движущейся целью и будет меняться в зависимости от клиентских подключений. Что вы используете в своем коде TimeToken? Есть несколько вариантов лучшей практики в зависимости от вашего случая использования ;-) – PubNub

+0

Пожалуйста, свяжитесь с нами по адресу [email protected], чтобы мы могли лучше понять, что вы пытаетесь выполнить, и можете помочь вам добиться успеха (либо через исправление на клиенте, существующая функциональность или обходной путь). – Geremy

+0

Этот случай успеха всегда вызывался со всеми вызовами подписки, если я помню. Я обновился до 3.7.0, и он больше не работает. –

ответ

2

Вы можете получить timetoken легко путем создания Java SDK баночка себя и изменения файла PubnubCore.java и изменяя номер строки 2617 это:

if (!isWorkerDead(hreq)) 
       callback.successWrapperCallback(channel, PubnubUtil.parseJSON(message), timeToken); 

и снова построить pubnub банку.

, а затем вы можете позвонить

@Override 
    public void successCallback(String channel, Object message, String timetoken) { 
     System.out.println("PUBNUB:"+channel + " : " 
     + message.getClass() + " : " + timetoken+" : "+message.toString()); 
    } 

я могу поделиться обновленной банкой, если вы хотите, чтобы пропустить этот процесс.

+0

Обновленная баня была бы полезна! –

Смежные вопросы