Сообщения 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);