使用共享订阅,中有未连接的客户端,测试发下数据好像还是会发给这个客户端。



两个共享订阅客户端,一个未连接,测试发下数据的时候还是会把这个未连接的当正常客户端按规则发送,导致一部分数据丢失。
这种情况是怎么产生的呢?应该怎么解决

环境信息

  • EMQ X 版本:4.3.7
  • 操作系统及版本:
  • 其他

问题描述

配置文件及日志

会话还存在,等客户端重新上线,且选择不清楚会话的模式时,这些数据还是会下发下去的

请问该怎么做?客户端连接的时候选择cleansession吗

测试客户端连接时候选择cleansession未0确实会出现这个情况,但我实际都设置了1.还是会出现这个情况,不知道为啥

一般情况clean session 为true时,你断开连接后,这个session已经断开。是不应该出现你说的这种情况。你重现一下,断开后,dashboard上是否还可以看到这个客户端连接记录

很奇怪,我测试是正常的。设置为true后,断开就没了。
然后我代码中也没用设置为false的地方。


线上的这个连接还是会出现false的情况。
还得检查下代码调试下

emqx有没有办法设置自动踢掉未连接的客户端。。

emqx可以踢掉未连接的客户端,当clean session为ture时,是根据心跳时间来检测,一般都是2* 0.75 * 心跳时间 来判断是否踢掉未连接的客户端;当clean session为false时,断开连接后,超过心跳时间,显示未连接,默认时2小时内未连接会自动踢掉。