您的位置:首页 > 新闻 > 资讯 > seo型网站_php是世界上最好的语言_关键词一般是指什么_中国最厉害的营销策划公司

seo型网站_php是世界上最好的语言_关键词一般是指什么_中国最厉害的营销策划公司

2025/6/5 21:21:01 来源:https://blog.csdn.net/qq_41709082/article/details/143252349  浏览:    关键词:seo型网站_php是世界上最好的语言_关键词一般是指什么_中国最厉害的营销策划公司
seo型网站_php是世界上最好的语言_关键词一般是指什么_中国最厉害的营销策划公司

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


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

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

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

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即可。如下:

devServer: {host: '0.0.0.0',port: 8081,compress: false, // 是否启动压缩 gziphttps: false,open: true,proxy: {......}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com