SSE实时推送订单状态

SSE

SSE是一种基于HTTP长连接的单向通信技术,只能从服务器到客户端。

特点: 自动重连机制,比Websocket轻量,传输格式text。

后端

创建SSEConntroller,需要时GET方法,与前端进行连接
SseEmitter 是 Spring 封装的 SSE 实现,底层遵循 SSE 协议规范

后端创建SseEmitterService,并封装sendMessage方法,订单变化时调用相应方法。

java 复制代码
emitter
.send(SseEmitter.event()
.id(String.valueOf(System.currentTimeMillis()))
.name(eventName)
.data(data));// SSE格式数据携带消息ID、事件名称和消息

前端

前端需要创建一个SSE全局上下文,包括根节点。

在SSE全局上下文中创建JS原生API EventSource ,创建自定义事件监听器对应上面的eventName事件,eventSource.addEventListener(eventName, ...)收取消息。

EventSource

EventSource使用JS的一个原生API,用来订阅SSE流。

只能使用GET请求,且不能携带header,如果为了通过token校验,可以在URL添加参数token。

每次请求浏览器就会记录消息ID,重连时 ,自动在请求头中添加lastEventId,可以通过这个解决断线时消息未提醒问题

使用场景

  1. 实时数据更新
  2. 消息提醒、内容推送
  3. 状态、进度提醒
相关推荐
云烟成雨TD5 分钟前
Spring AI Alibaba 1.x 系列【63】AI Agent 长期记忆
java·人工智能·spring
憧憬成为java架构高手的小白15 分钟前
苍穹外卖--day09
java·spring boot·百度
学代码的真由酱20 分钟前
Java多用户一对一网页聊天室-测试报告
java·开发语言·功能测试·测试
Jasonakeke1 小时前
SpringBoot自动配置原理揭秘
java·spring boot·后端
2301_803538951 小时前
Java读取Word图片的两种实用方法
java·开发语言·word
C+-C资深大佬2 小时前
SSM 框架(Spring + SpringMVC + MyBatis)
java·spring·mybatis
帅次2 小时前
Android 17 开发者实战:核心更新与应用场景落地指南
android·java·ios·android studio·iphone·android jetpack·webview
Ramble_Naylor2 小时前
东方通(TongWeb)SpringBoot开发指导
java·spring boot
大鹏说大话2 小时前
SQL 排序与分组实战:解决“分组后取最新数据“
android·java·数据库
云烟成雨TD2 小时前
Spring AI Alibaba 1.x 系列【64】 ReactAgent 长期记忆
java·人工智能·spring