【问题标题】:Connection is disconnecting when mobile is going offline and then not getting offline message in Smack (xmpp)当移动设备离线时连接断开,然后在 Smack (xmpp) 中没有收到离线消息
【发布时间】:2017-02-09 01:27:54
【问题描述】:

当我在 Smack 中再次上线时,我正在尝试实现离线消息 这是我的连接代码,我也可以重新连接并继续聊天,但在使用 OfflineManager 时也没有收到离线消息,但它是零消息...

    public void connectConnection() {
    AsyncTask<Void, Void, Boolean> connectionThread = new AsyncTask<Void, Void, Boolean>() {

        @Override
        protected Boolean doInBackground(Void... arg0) {

            // Create a connection
            try {
                connection.connect();
                login();
                connected = true;
                scheduleTaskExecutor = Executors.newSingleThreadScheduledExecutor();
                scheduleTaskExecutor.scheduleWithFixedDelay(new Runnable() {
                    @Override
                    public void run() {
                        Log.e("xmpp", "inside run()");
                        Log.d("xmpp", "isconnect: " + connection.isConnected() + " Auth: " + connection.isAuthenticated());
                        Log.d("xmpp", "getPacketReplyTimeout: "+String.valueOf(connection.getPacketReplyTimeout()));

                        SettingStore ss=new SettingStore(getApplicationContext());
                        if (ss.getStartChatValue()){

                            try {
                                Presence presence = new Presence(Presence.Type.available);
                                connection.sendPacket(presence);
                            } catch (SmackException.NotConnectedException e) {
                                e.printStackTrace();
                            }

                                if (connection.isConnected()) {
                                sendMessagesToServer();

                            } else {
                                try {
                                    connection.connect();
                                    login();
                                } catch (SmackException e) {
                                    e.printStackTrace();
                                } catch (IOException e) {
                                    e.printStackTrace();
                                } catch (XMPPException e) {
                                    e.printStackTrace();
                                }

                            }
                        }
                        else {
                            disconnectAndStopTimmer();
                        }


                    }

                }, 0, 2, TimeUnit.SECONDS);


            } catch (IOException e) {
            } catch (SmackException e) {

            } catch (XMPPException e) {
            }

            return null;
        }
    };
    connectionThread.execute();

}

我遇到连接超时错误

09-30 19:07:20.796 10323-10382/? W/AbstractXMPPConnection: Connection closed with error
                                                       javax.net.ssl.SSLException: Read error: ssl=0x60fefe48: I/O error during system call, Connection timed out
                                                           at com.android.org.conscrypt.NativeCrypto.SSL_read(Native Method)
                                                           at com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:690)
                                                           at java.io.InputStreamReader.read(InputStreamReader.java:233)
                                                           at java.io.BufferedReader.read(BufferedReader.java:325)
                                                           at org.kxml2.io.KXmlParser.fillBuffer(KXmlParser.java:1506)
                                                           at org.kxml2.io.KXmlParser.peekType(KXmlParser.java:986)
                                                           at org.kxml2.io.KXmlParser.next(KXmlParser.java:346)
                                                           at org.kxml2.io.KXmlParser.next(KXmlParser.java:310)
                                                           at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1164)
                                                           at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPConnection.java:944)
                                                           at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:959)
                                                           at      java.lang.Thread.run(Thread.java:862)
 09-30 19:07:20.796 10323-10382/? D/xmpp: ConnectionClosedOn Error!

【问题讨论】:

标签: android xmpp smack xmppframework


【解决方案1】:

将您的连接移至后台服务,使其始终处于连接状态。

在openfire中,有重新发送离线消息的选项

服务器 > 服务器设置 > 离线消息

存储离线消息以供以后检索。邮件将在收件人下次登录时发送。

当用户连接到 xmpp 时,这将自动再次发送消息

【讨论】:

    猜你喜欢
    • 2018-05-31
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 2023-04-06
    • 2022-01-21
    • 1970-01-01
    相关资源
    最近更新 更多