2015-08-05 7 views
0

У меня есть сервер, который посылает тест EventSource сообщение так:EventSource сообщения не получил в Firefox

Запрос:

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 в телнет, чтобы проверить его), и в соответствии с Wireshark отправляется сообщение event: data, но не вызывается ни обработчики , ни onerror. onerror вызывается, когда я останавливаю сервер.

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

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

ответ

0

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

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

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

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