smack / ejabberd 连接超时

smack / ejabberd Connection Timeout

我们正在使用 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))

尝试用谷歌搜索原因,但无法找到解决方法。感谢任何帮助。

提前致谢。

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

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

UPDATE 我试过 smack 库版本 4.3.2(及更新版本),方法 connection.setPacketReplyTimeout 已被删除,所以改用它:

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