天天看点

SpringBoot整合WebSocket实现数据推送

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使用示例

继续阅读