asmack自身已經包括了斷網重連的方案(ReconnectionManager),客戶端不需要自己再做重連方案,但是需要幾個設置,如下所示:
configuration.setReconnectionAllowed(true); // 允許重連
configuration.setSendPresence(true);// 允許默認發送出息狀態,這個很重要,如果設爲false,將會導致重連後不能接收消息!
// 在連接單例中初始化重連管理類
static{
try{
Class.forName("org.jivesoftware.smack.ReconnectionManager");
}catch(Exception e){
e.printStackTrace();
}
}
[2014-03-21]
補充:
對於紅色字體,可以在重連成功後發送一個上線的packet.所以那個狀態也不是那麼重要了。