基于WebSocket的简易聊天室,开发完成不过还是脱离了原来对期的技术构想。等完成了优化,打算去研究,换另一种方式。技术就是需要不断学习~
话不多说,开始讲讲用到了什么技术
技术框架
用Maven管理jar包
- SSM框架,用mybatis自动生成jar包,配置generateConfig.xml根据数据库自动生成
(IDao/Mapper/entity)
SSM框架配置 - 安全框架(shiro)权限过滤。
- 前端框架(vue+element-ui)
- 数据库用的是Mysql
首先逻辑是这样的
进入系统首先会被shiro拦截,判断是否有认证和权限能访问该页面,如果有认证但是没有权限会跳转403页面。如果没有认证,直接跳转登录页面。
代码是这样配置的:
anon->任何人都可以访问
authc->判断是否有认证
perms->判断是否有访问/chatDo/toChatGui路径的权限,细颗粒度
roles->判断是否有例如:EDIT、UPDATE、ADD、DELETE权限
登录成功开始进入聊天页面(chat-gui.jsp),这时候就会自动连接WebSocket,并且自动发送给全体上线人员,记录在线人员。主要是根据每个用户的Session的basicRemote进行SendText,进行指定用户的消息发送或者群发消息。
登出后,就自动断掉连接 ,给所有人发送,更新在线列表。
vue设置访问页面就访问initWebSocket方法,自动连接 WebSocket,如下图。
通过前端使用ws.onopen,后端使用@OnOpen注解,连接WebSocket服务端,并记录在线人员(安全模式),保存每个用户的Session,以及每个用户的WebSocket服务端。
如下图:
WebSocket的实现主要参考了该博主:https://blog.csdn.net/Amayadream/article/details/50551617
言语可能不通顺,也可能太单调,敬请谅解~
来自一枚一直在学习的程序猿。
下面附上代码:
https://github.com/Shenweiqu/Webchat
代码会持续更新完善~~