smack / ejabberd 连接超时

Posted

技术标签:

【中文标题】smack / ejabberd 连接超时【英文标题】:smack / ejabberd Connection Timeout 【发布时间】:2016-07-04 12:21:21 【问题描述】:

我们使用 ejabberd 的 Pub/Sub 机制在多个客户端之间发送消息。服务端运行的ejabberd版本是16.04,smack库版本是4.1.1。

消息的发布和订阅在一段时间内正常工作,一段时间后我们在客户端收到以下异常:

org.jivesoftware.smack.SmackException$NoResponseException: No response received within reply timeout. Timeout was 15000ms (~15s). Used filter: IQReplyFilter: iqAndIdFilter (AndFilter: (OrFilter: (IQTypeFilter: type=error, IQTypeFilter: type=result), StanzaIdFilter: id=T89NL-174)), : fromFilter (OrFilter: (FromMatchesFilter (full): pubsub.unio.com))

尝试谷歌搜索原因,但无法找到解决方案。任何帮助表示赞赏。

提前致谢。

【问题讨论】:

试试这个链接。这可能会有所帮助community.igniterealtime.org/thread/55302 【参考方案1】:

我有同样的问题。登录后,我将连接的数据包回复超时更改为某个合适的值(例如 10 秒)。在 smack 中,在 connection.login() 之后 你可以设置

connection.login();
connection.setPacketReplyTimeout(10000); // 10 sec

更新我尝试了 smack 库版本 4.3.2(和更高版本),方法 connection.setPacketReplyTimeout 被删除,所以改用这个:

connection.login();
connection.setReplyTimeout(10000); // 10 sec

【讨论】:

以上是关于smack / ejabberd 连接超时的主要内容,如果未能解决你的问题,请参考以下文章

Smack4.1.7 在回复超时内没有收到回复

smack 正在连接到 ejabberd 服务器

如何恢复会话 - ejabberd

在 XMPP 服务器上将 IQ 节超时更改为 5 秒的可能影响

使用 Strophe 连接到 ejabberd 的 AUTHFAIL 和会话超时

TFTP连接超时