SpringBoot整合WebSocket实现数据推送
- 基本概念
- WebSocket示例
- WebSocket:
- WebSocket是一种在单个TCP连接上进行全双工通信的协议
- WebSocket使得服务器和客户端之间的数据交换更加简单,允许服务端主动向客户端推送数据
- 在WebSocket中,浏览器和服务器只需要完成一次握手,两者之间就可以直接创建持久性的连接,并进行双向数据传输
- 使用WebSocket方式实现数据推送:
SpringBoot整合WebSocket实现数据推送 - 使用WebSocket实现数据推送的优点:
- 较少的控制开销: 在连接创建后,服务器与客户端之间交换数据时,用于协议控制的数据包头部相对较小. 在不包括扩展的情况下,对于服务器到客户端的内容,头部的大小只有2-10字节,大小和数据包长度相关; 对于客户端到服务器的内容,头部需要加上额外的4个字节的掩码. 相对于HTTP请求每次都需要携带完整的头部,这里的开销明显减少
- 较强的实时性: 由于协议是全双工的,所以服务器可以随时主动下发数据给客户端. 相对于HTTP请求需要等待客户端发起请求服务端才能响应,延迟明显减小. 对于和Comet等长轮询相比较,也能在短时间内更多次地传递数据
- 保持连接状态: 和HTTP不同 ,WebSocket需要先创建连接,这使得WebSocket成为一种有状态的协议,这样通信时可以省略部分状态信息. 而HTTP请求可能需要在每次请求时都要携带状态信息,比如身份认证等
- 较好的二进制支持: WebSocket中定义了二进制帧. 和HTTP相比较,可以更好地处理二进制数据
- 支持扩展: WebSocket定义了扩展,可以扩展协议,实现部分自定义的子协议. 比如部分浏览器支持压缩等
- 较好的压缩效果: 和HTTP压缩相比较 ,WebSocket在适当的扩展支持下,可以沿用之前的上下文,这样在传递类似数据时,可以显著提高压缩率
- PC:
- 系统管理员账号密码登录
- 服务器Server权限框架校验
- 校验成功
- 根据用户ID保存Session
- 登录首页自动连接WebSocket
- 服务器Server建立连接并根据用户ID绑定当前浏览器Session
- APP:
- 在APP端进行信息填写
- 服务器Server校验信息填写是否正确
- 服务端Server查询管理员是否在线
- 查询管理员在线
- 推送信息填写的消息
- 注意:
- 退出PC系统的则关闭WebSocket连接
- APP信息填写成功,查询管理员是否在线.如果在线则推送填写成功的消息. 如果不在线,则先保存成功填写成功的消息,在管理员上线时再推送填写成功的消息
- WebSocket使用示例