Websocket案例二:账号多端登录踢出

前言

上一篇介绍了websocket的原理,以及一个聊天室的Demo上一篇,本文继续基于websocket实现一个账号多端登录踢出的案例。主要的流程程如图:
实现大体的登录流程
主要流程说明:

  1. 浏览器客户端1用账号001登录成功后,服务端会生成token,并记录在服务端缓存。
  2. 服务端的token返回给客户端,客户端保存于本地cookie中。然后,基于token的方式与服务端建立websocket连接。注意这里浏览器可能会刷新,会重新关闭连接再重连。
  3. 客户端2用账号001登录成功后,服务端会重新生成token,会重新记录缓存。
  4. 这里跟2的动作一样。
  5. 服务端会通知其他端进行退出操作(这里需要注意的是:同一个浏览器可能打开多个标签,这时所有标签的登录页都不做退出处理,这里就涉及同一个用户会连接多个websocket的现象)

技术栈

具体参考上一篇,用的是一样的技术,且在同一个源码下。

主要代码说明

LoginController

@Controller
public class LoginController {
   
    ScheduledExecutorService service = Executors.newScheduledThreadPool(4);

    @Autowired
    private WebSocketKeepOneLoginServer webSocketKeepOneLoginServer;

    private static Map<String, UserDto> userDtoMap = new HashMap<>();
    static {
   
        //用户集合
        userDtoMap.put("user001" ,UserDto.builder().userId("user001").psw("user001").userName("用户1").build());
        userDtoMap.put("user002" ,UserDto.builder().userId("user002").psw("user002").userName("用户2").build());
        userDtoMap.put("user003" ,UserDto.builder().userId("user003").psw("user003").userName("用户3")
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值