同一个用户登录不同设备,如何区分是移动端还是手机端

wesley_li

描述:

因为ws支持同一个用户可登录多个相同或者不同的设备,会生成多个client_id绑定的同一个uid,
绑定的时候能否有更好的方法去标识此client_id属于哪个设备来源(是使用SESSION吗?通过Client_ID查询对应的session里存的某个来源值,这个涉及到轮询for)
方便ws服务器端通过用户ID查询当前用户下的client_id能清晰的知道每一个client_id所对应的设备来源值?
简单可以理解为,某个用户PC端多个(如2个)浏览器登录,APP端IOS和Andriod同时登录,则目前就有4个所属同一个uid的client_id,这个时候我想知道,这些client_id那些是属于APP设备的。在同一个用户登录多个设备的情况下快速找到登录APP设备的client_id,或者更快的判断当前用户是或否有在APP设备登录且当前在线(不在线)??

5413 2 0
2个回答

six

可以给连接按照 用户+设备 分组啊,
uid为A的用户,APP设备连接可以加入分组 A-App,Gateway::joinGroup($client_id, 'A-APP');
uid为A的用户,网页连接可以加为分组A-PC,Gateway::joinGroup($client_id, 'A-PC');
给A用户的所有APP发数据就是Gateway::sendToGroup('A-APP');
获得A用户的所有APP设备连接的client_id,可以Gateway::getClientIdListByGroup('A-APP');

要想获得某个client_id对应的是啥设备,可以给client_id的连接设置个$_SESSION = 'xx',
然后就可以用接口Gateway::getSession($client_id);获得对应client_id的session来判断设备类型

  • wesley_li 2018-07-17

    那如果还是要解决同一个用户登录的这么多设备的情况下,怎么知道这个人所有的client_id里有没有移动设备端在线的client_id.谢谢

  • six 2018-07-18

    印象中有Gateway::getClientIdListByGroup 这个接口

wesley_li

那如果还是要解决同一个用户登录的这么多设备的情况下,怎么知道这个人所有的client_id里有没有移动设备端在线的client_id.谢谢

  • 暂无评论
年代过于久远,无法发表回答
🔝