Сообщения EventSource не получены в Firefox

У меня есть сервер, который отправляет тест 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 материал отправлен, но ни onmessage ни onerror обработчики называются. onerror вызывается, когда я останавливаю сервер.

Данные никогда не отображаются на вкладке "Ответ" в сети.

У кого-нибудь есть идеи что не так?

1 ответ

Решение

Ага я нашел ответ! Firefox не любит ;charset=UTF-8, Спецификация говорит, что вы можете иметь ;charset=utf-8 который позволяет Firefox.

Довольно строгая интерпретация спецификации, но достаточно справедливая.

Кроме того, вы получаете только onmessage() для одиноких data: линий. Если data: предшествует и event: имя тогда onmessage() не вызывается - вместо этого вы должны использовать это:

source.addEventListener('name_of_my_event', myEventHandler, false);
Другие вопросы по тегам