我正在开发一个移动聊天应用程序,最近几天我开始遇到连接的问题(我的情况是第一次我的连接工作正常,但当我的应用程序断开连接时(通过断开网络连接或关闭wifi或糟糕的网络)然后我的应用程序重新连接但无法发送消息,但同时应用程序可以收到消息):重新连接我正在使用reconnectionmanager
我正在使用smack4.1库。
错误详细信息:客户端未连接或不再连接
由于 我的连接和重新连接代码是 -
XMPPTCPConnectionConfiguration.Builder connConfig = XMPPTCPConnectionConfiguration
.builder();
connConfig
.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
connConfig.setUsernameAndPassword(user, pass);
connConfig.setServiceName(SERVICE_NAME);
connConfig.setHost(SERVER_HOST);
connConfig.setPort(SERVER_PORT);
connConfig.setDebuggerEnabled(true);
connConfig.setConnectTimeout(25000);
XMPPTCPConnectionConfiguration configuration = connConfig.build();
connection = new XMPPTCPConnection(configuration);
connection.setUseStreamManagement(true);
connection.setUseStreamManagementResumption(true);
connection.setReplyToUnknownIq(true);
connection.setPacketReplyTimeout(25000);
ReconnectionManager manager = ReconnectionManager.getInstanceFor(connection);
manager.setFixedDelay(10);
ReconnectionManager.setDefaultReconnectionPolicy (ReconnectionManager.ReconnectionPolicy.FIXED_DELAY);
manager.enableAutomaticReconnection();
ReconnectionManager.setEnabledPerDefault(true);
connection.addConnectionListener(new ConnectionListener() {
@Override
public void connected(XMPPConnection xmppConnection) {
IsConnected = true;
}
@Override
public void authenticated(XMPPConnection xmppConnection, boolean bt) {}
@Override
public void connectionClosed() {
IsConnected = false;
}
@Override
public void connectionClosedOnError(Exception e) {
IsConnected = false;
}
@Override
public void reconnectionSuccessful() {
IsConnected = true;
}
@Override
public void reconnectingIn(int i) {
}
@Override
public void reconnectionFailed(Exception e) {
}
});
} catch (Exception ex) {
ex.printStackTrace();
}
用于向用户发送消息 connection.sendStanza(messsageObj);