asmact自动重连要能进行,那么asmact必须要使用ReconnectionManager类。可是在asmact的ConnectionConfiguration源码中,没有任何加载ReconnectionManager类的代码,所以在客户端单独使用如下设置是不起作用的:
configuration.setReconnectionAllowed(true);
还需在代码前静态加载ReconnectionManager,重连才能正常工作:
static{
try{
Class.forName("org.jivesoftware.smack.ReconnectionManager");
}catch(Exception e){
e.printStackTrace();
}
}
完成后测试,不管是断网还是openfire服务器重启情况下,客户端都会自动重连(如果直接在服务器上关闭会话,是不会重连的)。自动重连的时候,会自动登陆。所以所自己手动重连的代码全删掉吧