前端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: {
				......
		}
 }
相关推荐
虹少侠13 分钟前
基于 WebKit 构建 macOS 多浮窗视频播放的技术实践(含完整产品落地)
前端·macos·swift·webkit
木易 士心16 分钟前
Vue 响应式数据失效全解析:从原理机制到工程实践
前端·javascript·vue.js
Rattenking16 分钟前
【CSS】---- 根据【张鑫旭-高宽不等图片固定比例布局的三重进化】的思考
前端·css
AC赳赳老秦17 分钟前
ELK栈联动:DeepSeek编写Logstash过滤规则与ES日志分析逻辑
运维·前端·javascript·低代码·jenkins·数据库架构·deepseek
0思必得026 分钟前
[Web自动化] Selenium浏览器对象方法(操纵浏览器)
前端·python·selenium·自动化·web自动化
Marshmallowc28 分钟前
React页面刷新数据丢失怎么办?彻底掌握LocalStorage持久化与状态回填的最佳实践
前端·javascript·react.js
郝学胜-神的一滴29 分钟前
Vue国际化(i18n)完全指南:原理、实践与最佳方案
前端·javascript·vue.js·程序人生·前端框架
tkevinjd30 分钟前
2-初识JS
开发语言·前端·javascript·ecmascript·dom
梦65034 分钟前
React 类组件与函数式组件
前端·javascript·react.js
Coder_Boy_35 分钟前
基于SpringAI的在线考试系统-成绩管理功能实现方案
开发语言·前端·javascript·人工智能·spring boot