前端SSE-EventSource message事件执行异常问题

前端SSE-EventSource message事件执行异常问题

前言: 最近项目中需要做一个消息中心-需要实现实时推送消息到客户端,之前一直都是使用WebSocket,但是最近了解到有比它更轻量化的方法可以达到相同的效果,就是SSE。但是与后端进行联调配合的时候遇到了一些很奇怪的问题,也是研究了很久才解决,特此记录。

问题:前端监听了message 事件,但是后端一直发送消息,前端并不能实时收到发送的每一条消息,只有在断开链接的那一次,会收到前面收到的所有消息,并且记录的是同一秒发送的。

前端代码如下:这里因为我们后端需要检验Token并且必须放到Header里面,所以前端这里用了一个库(@microsoft/fetch-event-source)来实现SSE

javascript 复制代码
const token = getAuthent('token');
 fetchEventSource('/api/base-sse/create', {
                method: 'get',
                headers: {
                    token
                },
                onopen(e) {
                    console.log('open', e);
                },
                onmessage(e) {
                    console.log('ffff', e);
                },
                onclose() {
                    console.log('sse断开');
                    // if the server closes the connection unexpectedly, retry:
                    throw new RetriableError();
                }
});

解决方案:原因是因为我们使用webpack的时候,启用compress压缩,这导致与SSE的解析冲突了,所以无法实时获取,我们只需要将 compress 改为 false即可。如下:

javascript 复制代码
devServer: {
        host: '0.0.0.0',
        port: 8081,
        compress: false, // 是否启动压缩 gzip
        https: false,
        open: true,
        proxy: {
				......
		}
 }
相关推荐
kyriewen1 小时前
我装了30多个Skill,给AI安排了8个岗位
前端·javascript·ai编程
风骏时光牛马1 小时前
大模型落地实践中的技术选型思路与方案对比
前端
IT_陈寒2 小时前
Vite打包时的静态资源坑,我帮你踩过了
前端·人工智能·后端
默_笙3 小时前
🔥 让 AI 帮我写完整个 Next.js 博客:框架就是 AI 的"上下文 buff"
前端·javascript
牧艺4 小时前
登录页还在用渐变?我一口气做了 5 个能摸的背景动效:吹蒲公英、滴墨染水、点熔岩闷裂
前端·canvas·交互设计
陆枫Larry4 小时前
状态机简介
前端
陆枫Larry4 小时前
一次登录问题排查:接口没错,错的是旧业务逻辑
前端
小小小小宇4 小时前
大模型打分与采样原理,以及 Pi Agent 核心原理
前端
一位正在转型AI全栈的前端工程师5 小时前
AI 全栈学习之旅 -Week 5:RAG 知识库问答系统:从零到生产级部署的全栈实践总结
前端·python
光影少年5 小时前
react navite 安卓iOS 打包、签名、环境区分
前端·react native·react.js