前端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: {
				......
		}
 }
相关推荐
怕浪猫12 小时前
分享一个做视频的skill,这条白板视频,每一笔都是代码画的
前端·javascript·面试
aa小小12 小时前
大屏自适应缩放方案
前端·数据可视化
陪我去看海13 小时前
被要求猛出小程序,做了这个多平台多环境的部署替我承受压力
前端·微信小程序·抖音小程序
Frag0ut14 小时前
告别插件时代:HTML5 视频播放对比 Flash/Silverlight/ActiveX 的性能与技术优势解析
前端·html5·视频播放·flash·activex·流媒体技术·silverlight
用户8186180280014 小时前
MongoDB文档模型设计——从建模到索引
前端
無名路人14 小时前
小程序点餐页吸顶滚动之分类按需加载,上划切换
前端·vue.js·微信小程序
竹林81815 小时前
把神经网络塞进一个浏览器标签页:端侧视觉 AI 的工程真相
前端·浏览器
乘风gg15 小时前
别跟风 AI 副业,工程师最该学的是 AI Coding
前端·ai编程·claude
Frag0ut15 小时前
深度解析:Chrome 自启动与后台常驻服务的作用、关闭方法及利弊权衡
前端·chrome
Amos_Web15 小时前
Rspack 源码解析(十五):Loader Runner 与 JS Loader 桥接
前端·rust·前端框架