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. 状态、进度提醒
相关推荐
Emily156853598702 小时前
Emerson 1C31129G03 Analog Input Module
java·开发语言·前端·plc·emerson·1c31129g03·input module
就叫_这个吧6 小时前
Java递归方法实现面包屑导航
java·开发语言
fīɡЙtīиɡ ℡7 小时前
AI 应用系统设计
java·开发语言·人工智能
城管不管7 小时前
重生——第十一次面试之挖财一面2026.8.19已OC
java·服务器·jvm·数据库·spring·面试·职场和发展
码匠许师傅7 小时前
【C++ 面试真题】26. 聊聊 C++ 的智能指针
java·c++·面试
AI绘画哇哒哒7 小时前
【建议收藏!】35岁后端血泪忠告,这3类人别硬转Agent(过来人亲述)
java·人工智能·后端·ai·程序员·大模型·agent
最强小杰8 小时前
gpt-5.6-sol 频繁报 503 怎么办?区分容量熔断和限速 429 的排查方法 + 可复用 retry wrapper
java·人工智能·gpt·ai
吠品10 小时前
Wine 在 Linux 上运行 Windows 软件完整指南
java·linux·服务器
亚历克斯神11 小时前
智能搜索系统的升级复盘——从 Elasticsearch 到混合检索的检索质量提升
java·spring·微服务
金銀銅鐵12 小时前
[Java] 一个方法最多可以有多少个入参?
java·jvm