emqttd中现有的两种方式:
1.通过HTTP API (/api/clients)可以获取当前在线的所有用户
2.通过订阅系统主题
$SYS/brokers/${node}/clients/${clientid}/connected
$SYS/brokers/${node}/clients/${clientid}/disconnected
分别接收用户上线和下线的通知
第一种方式我的想法是通过定时任务,每隔一段时间获取一次所有在线用户,然后对比更新redis
第二种方式就是正常的收到通知单条更新
但是现在发现有两个问题,
第一种方式不是真正的实时获取数据,会产生延迟,并且数据量大的话一次数据处理过程时间也不短;
第二种方式虽然看着很灵活,但是由于web端的刷新也会触发用户的上下线,所以服务器接收消息的频率非常高,并且无法排除伪下线;
有没有高手知道这一块应该怎么处理才合适?
楼主可以加我qq吗 我也在用emq做web推送 想问你问题