smack / ejabberd 连接超时

sam*_*977 3 android ejabberd smack

我们使用 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))
Run Code Online (Sandbox Code Playgroud)

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

提前致谢。

The*_*ick 5

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

connection.login();
connection.setPacketReplyTimeout(10000); // 10 sec
Run Code Online (Sandbox Code Playgroud)

更新我尝试了 smack 库版本 4.3.2(和更新版本),方法connection.setPacketReplyTimeout已删除,因此请改用它:

connection.login();
connection.setReplyTimeout(10000); // 10 sec
Run Code Online (Sandbox Code Playgroud)