XMPP 流发送,不接收。为啥 XMPP 流可能会断开连接?

Posted

技术标签:

【中文标题】XMPP 流发送,不接收。为啥 XMPP 流可能会断开连接?【英文标题】:XMPP stream sending, not receiving. Why might an XMPP stream disconnect?XMPP 流发送,不接收。为什么 XMPP 流可能会断开连接? 【发布时间】:2014-02-06 23:47:29 【问题描述】:

只是让您知道我继承了这个项目,以便您知道我不知道这一切是如何实现的。

项目ios 上的 XMPP/Jabber 聊天客户端,支持 php 服务器

我正在两个物理 iPhone 设备上测试该应用程序。

看起来应用正在发送它应该通过 XMPP 流发送的消息,但应用肯定没有收到这些消息。

每次应用应收到一条消息时,它都会重新协商它在应用开始运行时所做的 XMPP 握手。

对此进行了调查,我发现流可能是断开连接或类似的东西。这是我实现的两条日志消息。它们包含正在运行的方法名称以及与该方法关联的 NSError 的内容

2014-02-06 18:28:50.140 AppName[9841:473b] --Socket Closed With Error--
Domain: (null)
UserInfo: (null)
2014-02-06 18:28:50.147 AppName[9841:60b] --xmppStreamDidDisconnect--
Domain: libxmlErrorDomain
UserInfo: 
    NSLocalizedDescription = "Couldn't find end of Start Tag body\n";

假设 1: 最明显的是,我查看了错误域和描述。 但是,还没有找到“找不到开始标签正文的结尾”的运气

假设 2: 我在某个论坛上读到,如果多个设备尝试使用相同的凭据登录同一服务器,XMPP 流可能会断开连接。我担心这可能是这里发生的事情,但是我如何确定这些凭据是否相同。这两个设备使用两个不同的用户名/用户 ID,我相信这对于 XMPP 来说已经足够了。

他们使用相同的 IP,但这对于 XMPP 来说很自然,不是吗?

例如。使用的 JID:

   user1@my.site.ip
   user2@my.site.ip

【问题讨论】:

【参考方案1】:

事实证明,当 XMPP 消息创建不正确但发送正确时,就会发生这种情况。这是“由于消息语法错误而断开连接”。

【讨论】:

以上是关于XMPP 流发送,不接收。为啥 XMPP 流可能会断开连接?的主要内容,如果未能解决你的问题,请参考以下文章

为啥在使用 XMPP 时多次发送聊天时会出现“服务不可用”?

PaulFreund/xmpp 接收标签订单

XEP-0199 XMPP Ping

为啥我的 XMPP 客户端重新发送消息?

xmpp连接黑莓java

处置 XmlWriter 而不发送未完成的结束元素