IM 聊天室中,实时更新当前在线用户列表如何实现?
最近想做个im聊天室学习一下workerman
, 选了gatewayworker
这个框架,今天做到聊天室的在线用户列表,遇到了下面的问题:
用户列表怎样能及时更新,同时能保证性能?
我首先想到了用定时器通过websocket每几秒发送在线用户到前台,但是这样有个弊端就是,每次发送都会查询用户信息,这样数据库方面就会有压力,感觉并不是一个好的解决方案
于是我又想到了第二种,连接进入聊天室后,先查询一次在线用户列表,然后有人进入或者退出的时候,向所有在线用户推送上线/下线信息,然后前端更新状态
暂时只想到一个看起来可行的方案,由于本人没有这方面的经验,所以请问一下各位,即时通讯类似的功能都是怎样实现的
感谢各位,看了一下官方聊天室demo的源码,感觉自己确实是想跑偏了,有相同问题的同学,可以参考一下这个项目 workerman-chat