gateway自己实现bindUid遇到的问题和解决方案

entere

说下思路,请教下大家看看有什么不对或需要改进的地方,谢谢

用uid和client_id绑定时有这样一个业务情景:
用户用多个浏览器都登录了,如果用户在某一个浏览器点退出登录时,需要当前浏览器所有的socket连接全部断开,在onclose清理时,无法判断需要清理那些socket。为了解决这个问题,我在redis中做了如下处理

集合类型
uid:1
session_id:65nfsq33hbto6s5d61eq80ri92 (如uid为1的用户登录chrome产生的session_id)
session_id:25nfsq33hbto6s5d61eq80ri93 (如uid为1的用户登录safari 产生的session_id)

集合类型
session_id:65nfsq33hbto6s5d61eq80ri92 (chrome连接产生的全部client_id )
client_id:1
client_id:2
client_id:3

session_id:25nfsq33hbto6s5d61eq80ri93(safari连接产生的全部client_id )
client_id:4
client_id:5
client_id:6

这样,用户在safari退出登录时 onclose时,就可以通过uid和session_id进行区分清理

大家帮看一下有没有更好的方法,谢谢~

7232 1 0
1个回答

walkor 打赏

这个方案ok

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