【问题标题】:Unusual EventSource error in FirefoxFirefox 中的异常事件源错误
【发布时间】:2026-02-16 17:50:01
【问题描述】:

与其他人不同,对我来说,Eve​​ntSource 在 Chrome 和 Firefox 中都被触发并正常工作。但是在 Firefox 中,每当我在浏览器中收到一条消息时,我都会收到一条错误消息。在 Chrome 中不会发生。

客户端代码:

var source = new EventSource('***');
source.addEventListener('message', function(event) { 
    ...
}, false);
source.addEventListener('ping', function(e) {
    ...
}, false);

source.addEventListener('error', function(e) {
    ... // now this part gets executed in firefox, whenever i recieve a msg
}, false);

服务器,nodejs代码:

    ***.on('fin',function(message){
        delete ***;
        res.header('Content-Type', 'text/event-stream');
        res.write('data: '+JSON.stringify(message)+'\n\n');
        res.end();
    });
    ***.on('busError',function(){
        delete ***;
        res.send(500);
    });

【问题讨论】:

  • 嗯,你得到什么错误信息?
  • 你能添加你正在使用的 Node.JS 服务器模块吗?我使用了'http'并没有遇到这个问题,但也许我只是强调它不够?你的message 字符串有多大?
  • @bergi,我收到的错误消息是空的,消息很小,100-200 个字符,奇怪的是,错误什么也没做,它只是出现了。但是将“传输编码”更改为“身份”修复了它。

标签: javascript html firefox server-sent-events


【解决方案1】:

自己找到了解决办法,

显然有一个重要的标头,Transfer-Encoding - 它应该被删除,或者作为身份保留,我猜在 Firefox 中,默认情况下它被视为块,这导致了问题。

一旦我在服务器中添加了以下行,错误就消失了。

res.header('Transfer-Encoding', 'identity');

我的来源是另一个problem 的答案。

documentation

【讨论】: