2015-11-24 46 views
3

在我發佈時使用PubNub爲什麼它開始連續循環? 該功能完成後,程序應該結束。 但發佈發佈消息後,發佈程序會繼續運行,就像它正在等待其他事情一樣。PubNub停止發佈

這裏是我的代碼

import java.sql.Timestamp; 
import java.util.Date; 

import com.pubnub.api.*; 

import org.json.*; 

public class UserRegister { 
    public static void main(String[] args) throws InterruptedException { 
     Pubnub pubnub_pub = new Pubnub("pub-c-3192165c-...", "sub-c-7debcf5c-..."); 

     Callback callback = 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()); 
      } 
     }; 

     String encMessage=""; 
     JSONObject message = new JSONObject(); 
     try { 

      System.out.println("user reg"); 
      message.put("CMD", "USER_REGISTER"); 
      message.put("EMAIL", "[email protected]"); 
      message.put("PASSWORD", "1123"); 
      message.put("TIMESTAMP", new Timestamp(new Date().getTime())); 
      encMessage = new MyEncrypt().encrypt(message.toString()); 

     } 
     catch (JSONException e) { 
         // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     pubnub_pub.publish("jabali_channel_101", encMessage, callback); 
    } 
} 

不應該在程序停止一旦它完成出版?它不會陷入某處的循環中。我可以在PubNub控制檯和用戶中看到輸出。另外,我可以在發佈聲明之後編寫我想要的任何內容,並像普通程序一樣繼續。
除了它自己永遠不會結束的事實
任何人都可以解釋發生了什麼嗎?

+0

我可以理解訂閱在無限循環中運行。它需要不斷收聽頻道。但是一旦發佈完成,就沒有意義了。有沒有辦法阻止它? –

+0

你可以啓用日誌記錄(使用調試jar),捕獲這種行爲併發送到[email protected]?而且你不應該公開你的酒吧鑰匙或你的副鑰匙。 –

回答

5

您可以使用:

pubnub_pub.stop();

這將終止線程本身發佈之後。

+0

只是不錯的答案@iaL ... ...幫助我...!謝謝..!! –