GatewayWorker如何判断在线用户需要定时循环调用isUidOnline来判断吗

sxfenglei

想写一个基于GatewayWorker的类似QQ聊天一样的产品。
1、注册用户写入数据库;
2、登录用户绑定client_id;
3、读取数据库获取所有好友列表(但是这个好友是否在线的状态怎么实现)在线显示彩色头像,不在线显示灰色头像。
思路一、是不是需要写个定时器没几秒中遍历每个用户的好友列表去调用isUidOnline判断用户是否在线;
思路二、将用户表所有用户标记为outline 在onConnect的时候将数据表用户状态改为online 然后再onClose 的时候将用户状态改为outline并推送一条离线数据到前端。

不知道是不是这样类判断用户是否在线并实时呈现在用户界面上,可是总感觉好像那里不对劲。

阅读 2520
2个回答

walkor

一般用思路二,性能会好一些

  • sxfenglei 2016-12-19

    谢谢您 那也就是说在使用GatewayClient的话 因为GatewayClient内没有onConnect和onClose因此处理方式和Gateway::bindUid()一样 就是监听当前socket及socket.onmessage()如果onClose事件推送来标记消息进行相应的处理即可。

xmyrz

常规第二种思路吧