smack客户端中的连接问题未连接或不再连接

时间:2016-02-22 15:54:08

标签: android xmpp chat smack

我正在开发一个移动聊天应用程序,最近几天我开始遇到连接的问题(我的情况是第一次我的连接工作正常,但当我的应用程序断开连接时(通过断开网络连接或关闭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);

0 个答案:

没有答案