Max*_*Max 26 connection android xmpp smack
我使用Android的asmack-android-7-beem库.我有一个后台服务正在运行,例如我的应用程序保持活动状态.但迟早XMPP连接会在没有任何通知的情况下死亡.服务器说客户端仍然在线,但没有发送或接收数据包.
例如,当其他客户端具有新的存在时,客户端不接收任何存在分组.我有XMPPConnection作为我的主要Application类的一个属性.
我ConnectionConfiguration config.setReconnectionAllowed(true)在连接之前设置了.
但重新连接不会发生.XMPPConnection connection.isConnected()返回true.
因此客户端不知道连接实际上已丢失.
有没有办法保持连接活着?
小智 12
当使用asmack时,在你的应用程序中添加这样的代码,使Dalvik加载ReconnectionManager类并运行它的静态初始化块:
static {
try {
Class.forName("org.jivesoftware.smack.ReconnectionManager");
} catch (ClassNotFoundException ex) {
// problem loading reconnection manager
}
}
Run Code Online (Sandbox Code Playgroud)
实际上重新连接管理器没有任何问题.首先,您需要将连接侦听器添加到连接管理器.
connection.addConnectionListener(new ConnectionListener() {
@Override
public void reconnectionSuccessful() {
Log.i("","Successfully reconnected to the XMPP server.");
}
@Override
public void reconnectionFailed(Exception arg0) {
Log.i("","Failed to reconnect to the XMPP server.");
}
@Override
public void reconnectingIn(int seconds) {
Log.i("","Reconnecting in " + seconds + " seconds.");
}
@Override
public void connectionClosedOnError(Exception arg0) {
Log.i("","Connection to XMPP server was lost.");
}
@Override
public void connectionClosed() {
Log.i("","XMPP connection was closed.");
}
});
Run Code Online (Sandbox Code Playgroud)
如果发生任何错误,则在关闭连接时将自动调用connectionClosedOnError(Exception arg0)
public void connectionClosed() {
Log.i("","XMPP connection was closed.");
//You can manually call reconnection code if you want to reconnect on any connection close
}
Run Code Online (Sandbox Code Playgroud)
然后检查它会调用reconnectingin()方法并尝试重新连接.
希望这对你有所帮助.
使用下面的代码进行检查连接
PingManager pingManager = PingManager.getInstanceFor(connection); pingManager.setPingInterval(5000);
添加用于ping失败处理的列表器以处理连接是否已连接,因为isConnected方法对于检查连接状态是不可靠的.
pingManager.registerPingFailedListener(PingFailedListener);
对于移动网络连接是一个非常大的问题,因此您需要使用广播接收器检查移动设备的网络连接,并且在数据重新连接时您可以使用pingMyServer方法检查连接是否存在,如果您从服务器获得ping回复,则表示连接处于活动状态否则在ping失败时您可以手动重新连接连接.
| 归档时间: |
|
| 查看次数: |
17593 次 |
| 最近记录: |