werew
- 用户注册
- 表单参数包括name、password提交到后台,执行添加用户逻辑
- password保存的时候采用MD5+Salt处理
- 用户登录
- 登录成功返回一个token,由后端颁发,具有半个小时的过期时间。
- 后续使用过程中的敏感操作都会带上这个token作为校验。若是token过期则重新颁发
- 敏感操作的接口都会被打上自定义注解@JwtToken。一般来说都是增删操作或者实时性操作
- token能够解决App预加载问题。比如头像、昵称、ID、用户二维码能够提前加载
- 头像
- 头像属于大数据文件,本来准备使用blob类型保存到Mysql数据库,但是这样对整个App的使用不方便
- 解决方案:使用FastDFS开源技术,把这种图片、语音、音频等文件保存到Linux服务器上的FastDFS Server上,这样方便头像、头像缩略图、音视频文件的异步加载
- 好友
- 好友的添加。
- 扫描对方的二维码名片添加
- 手动在查询界面输入对方的ID添加
- WebSocket技术实时通知App端
- 好友的删除(预设接口,未实现)
- 好友的资料查看(预设接口,未实现)
- 好友的添加。
- 聊天服务器
- 使用Netty + WebSocket技术打造聊天服务器
- Netty主要负责消息的类型判断、转发流程、保存操作
- WebSocket主要负责App端和Server端的实时互相通信。解决使用Http协议通信会带来不可靠、服务端无法图送消息等问题。
- 聊天chatting
- 单聊(私聊)
- 群聊(预设接口,未实现)
- 消息
- 文字消息
- 文字消息过滤。过滤掉HTML、CSS、JS等关键字比如
等。 - 文字消息的发送。WebSocket对象的send()函数与服务端实时通信
- 文字消息过滤。过滤掉HTML、CSS、JS等关键字比如
- 系统消息
- 好友相关操作消息(实时性)
- 心跳消息(保持连接)
- 语音消息(预设接口,未实现)
- 图片消息(预设接口,未实现)
- 视频消息(预设接口,未实现)
- 文字消息
- 心跳
- 为了保持每个App的连接的有效性以及释放非必要资源。
- WebSocket共同使用,WebSocket负责定时发送心跳包。
- Netty.IdleStateEvent负责心跳的检测