Smack / ejabberd 连接超时

3
我们正在使用ejabberd的发布/订阅机制在多个客户端之间发送消息。服务器上运行的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))

我尝试通过谷歌搜索找到原因,但未能找到解决方案。感激任何帮助。

提前致谢。


1
试试这个链接。这可能会有所帮助:https://community.igniterealtime.org/thread/55302 - Sagar Nayak
1个回答

5

我曾遇到过同样的问题。在登录后,我将连接的数据包回复超时时间更改为适当的值(例如10秒)。在Smack中,在connection.login()之后,您可以进行设置:

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

更新:我尝试使用的smack库版本为4.3.2(以及更新版本),方法connection.setPacketReplyTimeout已经被移除,因此请改用以下方法:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接