我目前正在使用 XMPP 框架构建一个聊天客户端。我探索了演示应用程序,我注意到当我输入我的用户名/密码时,需要很长时间(大约 15 秒)才能接收连接和身份验证回调。
登录和验证需要这么长时间是否有特定原因?有没有可能加快速度?例如,Whatsapp 或 iChat 也在使用 xmpp,而且速度非常快。
我在运行 10.8 和 xCode 4.4 的 Mac 上使用 ejabberd 作为 XMPP 服务器。
提前致谢!
我目前正在使用 XMPP 框架构建一个聊天客户端。我探索了演示应用程序,我注意到当我输入我的用户名/密码时,需要很长时间(大约 15 秒)才能接收连接和身份验证回调。
登录和验证需要这么长时间是否有特定原因?有没有可能加快速度?例如,Whatsapp 或 iChat 也在使用 xmpp,而且速度非常快。
我在运行 10.8 和 xCode 4.4 的 Mac 上使用 ejabberd 作为 XMPP 服务器。
提前致谢!
SRV 查找需要时间,这就是您面临问题的原因
通过设置解决这个问题 [xmppStream setHostName: @"******"]
;
下面有更多解释
不确定您的情况,但是某些客户端在为服务器域执行 DNS 查找时会出现这种延迟。工作流程是首先搜索 SRV 记录,正如 XMPP 规范所期望的那样。如果域没有 SRV 记录,则回退并尝试在预期的 5222 端口直接连接到域。但是首先尝试使用 SRV 然后回退的过程可能会花费几秒钟。
如果是这种情况,您可以将客户端配置为连接到服务器而不进行 SRV 查找,或者为您的域正确设置 SRV 记录。
跟进电子邮件线程,我同意 ppolv 的观点,DNS 超时可能与此处有关。您是否为您的域配置了 SRV 条目?他们是正确的吗?如果您转储 Psi 和 Trillian 生成的流量,您是否发现它们之间的 DNS 请求有差异?