【CBoard】结合WebSocket消息机制,同名用户登录时,实时让第一个登录用户弹出消息窗口
如图:
Spring Security做用户管理可以,但是第一个登录用户被第二个登录用户踢掉后,前端的页面如果不刷新,是不会有相关的被注销登录的提示,只能在刷新页面后才能看到对应的文本,可以参考上一章节《36.Spring Security 用户并发控制入门 》。那么如何实现后者登录后,前者自动就弹出提示呢?这里借助WebSocket机制来完成。
原理是每个登录用户登录的时候,把用户名、sessionId放入 WebSocket服务端的一个静态哈希表中。
每次登录,当发现有登录名一致、sessionId不一致的消息的时候,就让之前在哈希表注册过的 那个sessionId的WebocketSession发送消息,然后再执行 Spring Security的退出。