0

我目前正在使用 XMPP 框架构建一个聊天客户端。我探索了演示应用程序,我注意到当我输入我的用户名/密码时,需要很长时间(大约 15 秒)才能接收连接和身份验证回调。

登录和验证需要这么长时间是否有特定原因?有没有可能加快速度?例如,Whatsapp 或 iChat 也在使用 xmpp,而且速度非常快。

我在运行 10.8 和 xCode 4.4 的 Mac 上使用 ejabberd 作为 XMPP 服务器。

提前致谢!

4

3 回答 3

2

SRV 查找需要时间,这就是您面临问题的原因

通过设置解决这个问题 [xmppStream setHostName: @"******"]

下面有更多解释

  • 此 hostName 属性是可选的。
  • 如果不设置hostName,那么框架将遵循使用jid 域的xmpp 规范。
  • 也就是说,它首先进行 SRV 查找(在 xmpp RFC 中指定)。
  • 如果失败,它将退回到简单地尝试连接到 jid 的域。
于 2014-11-18T18:31:21.090 回答
2

不确定您的情况,但是某些客户端在为服务器域执行 DNS 查找时会出现这种延迟。工作流程是首先搜索 SRV 记录,正如 XMPP 规范所期望的那样。如果域没有 SRV 记录,则回退并尝试在预期的 5222 端口直接连接到域。但是首先尝试使用 SRV 然后回退的过程可能会花费几秒钟。
如果是这种情况,您可以将客户端配置为连接到服务器而不进行 SRV 查找,或者为您的域正确设置 SRV 记录。

于 2012-09-01T19:26:30.817 回答
0

跟进电子邮件线程,我同意 ppolv 的观点,DNS 超时可能与此处有关。您是否为您的域配置了 SRV 条目?他们是正确的吗?如果您转储 Psi 和 Trillian 生成的流量,您是否发现它们之间的 DNS 请求有差异?

于 2012-09-10T17:18:33.293 回答