Firefox中未收到EventSource消息

时间:2015-08-05 14:03:11

标签: http firefox eventsource

我有一个发送测试EventSource消息的服务器,如下所示:

请求:

GET /web/stream/status HTTP/1.1
Host: localhost:1010
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0
Accept: text/event-stream
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://localhost:1010/web/
Cookie: JSESSIONID=1miz08s4nu74q11sm7y44uwu2b
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

响应:

HTTP/1.1 200 OK
Content-Type: text/event-stream;charset=UTF-8
Connection: close
Server: Jetty(9.0.6.v20130930)

event: data
data: hello

所有行都以\r\n终止。所以这看起来对我来说,但如果我在Firefox中尝试这个...

var source = new EventSource('/web/stream/status');
source.onmessage = function(event) { console.log(event); };
source.onerror = function(event) { console.log(event); };

...然后它完全如上所述连接并执行请求(事实上我将会话从Wireshark复制到telnet中进行测试),根据Wireshark发送event: data内容,但{调用{1}}或onmessage个处理程序。当我停止服务器时调用onerror

网络内容的“响应”选项卡中没有显示任何数据。

有没有人有任何想法有什么问题?

1 个答案:

答案 0 :(得分:1)

啊哈,我找到了答案! Firefox不喜欢;charset=UTF-8。规范说你可以拥有Firefox允许的;charset=utf-8

对规范的严格解释但是足够公平。

此外,对于单独的onmessage()行,您只能获得data:。如果data:前面带有event:名称,则onmessage()未被调用 - 而是您必须使用此名称:

source.addEventListener('name_of_my_event', myEventHandler, false);