Alp*_*pan 15 android xmpp smack asmack
我正在android中开发一个聊天应用程序.使用XMPP服务器.PHP服务器已迁移到ejabber.
我的通知在所有情况下都能正常运行 但在一个案例中,我正在丢失XMPP消息.事实上我没有收到通知.
详细说来,我正在关闭WiFi或数据连接.关闭WiFi或数据连接后,发送给我的任何通知都没有收到.在我打开WiFi或数据连接后,我无法收到发送给我的消息.
我已经在后台实施了服务.这使得xmpp连接永远存在.
我关闭WiFi连接时收到此错误.
java.net.SocketException: sendto failed: EPIPE (Broken pipe)
java.net.SocketException: recvfrom failed: ETIMEDOUT (Connection timed out)
at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:506)
at libcore.io.IoBridge.sendto(IoBridge.java:475)
at java.net.PlainSocketImpl.write(PlainSocketImpl.java:508)
at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:46)
at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:270)
at java.io.OutputStreamWriter.flushBytes(OutputStreamWriter.java:167)
at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:158)
at java.io.BufferedWriter.flush(BufferedWriter.java:124)
at org.jivesoftware.smack.PacketWriter.writePackets(PacketWriter.java:286)
at org.jivesoftware.smack.PacketWriter.access$12(PacketWriter.java:270)
at org.jivesoftware.smack.PacketWriter$1.run(PacketWriter.java:137)
Caused by: libcore.io.ErrnoException: sendto failed: EPIPE (Broken pipe)
at libcore.io.Posix.sendtoBytes(Native Method)
at libcore.io.Posix.sendto(Posix.java:146)
at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:177)
at libcore.io.IoBridge.sendto(IoBridge.java:473)
... 9 more
at libcore.io.IoBridge.maybeThrowAfterRecvfrom(IoBridge.java:552)
at libcore.io.IoBridge.recvfrom(IoBridge.java:516)
at java.net.PlainSocketImpl.read(PlainSocketImpl.java:489)
at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:241)
at java.io.InputStreamReader.read(InputStreamReader.java:244)
at java.io.BufferedReader.read(BufferedReader.java:310)
at org.jivesoftware.smack.XMPPConnection$AliveReader.read(XMPPConnection.java:1122)
at org.kxml2.io.KXmlParser.fillBuffer(KXmlParser.java:1496)
at org.kxml2.io.KXmlParser.peekType(KXmlParser.java:979)
at org.kxml2.io.KXmlParser.next(KXmlParser.java:346)
at org.kxml2.io.KXmlParser.next(KXmlParser.java:310)
at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:321)
at org.jivesoftware.smack.PacketReader.access$1(PacketReader.java:216)
at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:70)
Caused by: libcore.io.ErrnoException: recvfrom failed: ETIMEDOUT (Connection timed out)
at libcore.io.Posix.recvfromBytes(Native Method)
at libcore.io.Posix.recvfrom(Posix.java:131)
at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:164)
at libcore.io.IoBridge.recvfrom(IoBridge.java:513)
... 13 more
Run Code Online (Sandbox Code Playgroud)
小智 4
因此,要安装 mod_archive,我需要执行此操作,典型的操作是:\n在 cmd 中写入以下行。(对于分 Os)
\n\n以 root 身份登录\n创建新目录:
\n\nmkdir ejabberd_archive_plugin\ncd ejabberd_archive_plugin\nRun Code Online (Sandbox Code Playgroud)\n\n现在使用以下命令获取最新的 ejabberd 模块
\n\nyum https://svn.process-one.net/ejabberd-modules\ncd ejabberd-modules/mod_archive/trunk\n./build.sh\nRun Code Online (Sandbox Code Playgroud)\n\n现在使用以下 cmd 进入 ebin 目录并获取 ejabberd 存档插件的所有 *.beam 文件的列表。
\n\nroot@ns1 [/ejabberd_archive_plugin/ejabberd-modules/mod_archive/trunk/ebin]# ls \xe2\x80\x93l\nRun Code Online (Sandbox Code Playgroud)\n\n使用以下 cmd,您将在 ejabberd 设置和配置时获得所有 ejabberd *.beam 文件列表。
\n\nroot@ns1 [/usr/lib64/ejabberd/ebin]# ls -l\nRun Code Online (Sandbox Code Playgroud)\n\n现在使用以下 cmd 将所有 *.beam(存档插件)文件复制到 ejabberd ebin 目录
\n\nroot@ns1 [/]# cp /ejabberd_archive_plugin/ejabberd-modules/mod_archive/trunk/ebin /usr/lib64/ejabberd/ebin\nRun Code Online (Sandbox Code Playgroud)\n\n现在转到以下 URL 并复制所有 sql 表查询并在 phpmyadmin(ejabberd 数据库)中运行
\n\nhttps://svn.process-one.net/ejabberd-modules/mod_archive/trunk/src/mod_archive_odbc_mysql.sql\nRun Code Online (Sandbox Code Playgroud)\n\n现在使用以下 cmd 配置 ejjaberd.cfg
\n\nroot@ns1 [/etc/ejabberd]# vi ejabberd.cfg \nAdd the following line into ejabberd.cfg file in modules configuration section\n{mod_archive_odbc, [{database_type, "mysql"}, {default_auto_save, true}, {enforce_default_auto_save, true}]},\nRun Code Online (Sandbox Code Playgroud)\n\n现在重新启动 ejabberd 服务。
\n\nroot@ns1 [/etc/ejabberd]# sudo service ejabberd restart\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
2404 次 |
| 最近记录: |