Netty聊天室
2023-11-29 11:45:42 0 举报
登录流程
作者其他创作
大纲/内容
WAIT_LOGIN_MAP根据code获取到channel
向微信发送起请求,返回一个二维码
MQ LOGIN_MSG_TOPIC
收到
前端定时心跳
对Token进行校验
NettyWebSocketServerHandler
尝试登录scanLoginSuccess
HttpServerCodec http编解码器
获取微信的token
返回授权链接给微信公众号
LOGIN登录
scanSuccess
判断是否存在Token
如果所有客户端都关闭,发送一个通知事件
未收到
LOGIN_MSG_TOPIC
关闭用户连接
IdleStateHandler 30S心跳
授权
前端扫描二维码
WAIT_LOGIN_MAP获取channel
发送给对应的用户登录成功
前端login
解析token获取到用户信息
删除掉当前的channel
不存在
更新Redis缓存的在线表,ONLINE_UID_ZET
通知前端channel发送消息,扫码成功
OPEN_ID_STRING redis当中获取到code
如果更新失败就重试更新,考虑到幂等性
MQ SCAN_MSG_TOPIC
30S内收到心跳包
修改数据库状态记录
HttpHeadersHandler http升级websocket之前提取到token 和 ip 到channel当中存储
先存储用户信息到数据库
获取到当前UID的所有channel,并且删除当前的channel
清除Redis在线表,添加离线表ONLINE_UID_ZETOFFLINE_UID_ZET
ONLINE_WS_MAP<font color=\"#323232\
登录事件
如果没有生成一个,并且放入redis,如果有就直接返回
查询数据库是否存在当前信息
callBack
WAIT_LOGIN_MAP移除channel
回调服务器AbstractHandler.handle附带code,用户的openid
@PostConstruct初始化Netty
存在
scanLoginSuccess
返回给前端
ONLINE_UID_MAPONLINE_WS_MAP
threadPoolTaskExecutor推送通知消息
0 条评论
下一页