Упрямство Microsoft по сравнению с SSE довольно невероятно, тем более, что реализация - это всего лишь слой более XMLHttpRequest2
, стандарт короток, там была замечательная книга О'Рейли об этом в течение 3 лет, и есть по крайней мере две реализации с открытым исходным кодом.
В любом случае, рекомендуется метод, чтобы получить совместимость обратно IE8, чтобы создать скрытый IFRAME, а затем сохранить ПОЛЛИНГ его внутренний источник, и просто вернуть все, что новое есть:
iframe = document.createElement("iframe");
iframe.setAttribute("style", "display: none;");
iframe.setAttribute("src", "abc_stream.php");
document.body.appendChild(iframe);
Если вам нужно только поддерживать обратно в IE10, вы можете использовать XMLHttpRequest2
объект, и слушать readyState==3
сообщений:
xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
//Read this.responseText from the previous offset onwards
};
var u = url;
u += "xhr=1&t=" + (new Date().getTime());
xhr.open("GET", u);
Эти методы нужно только очень небольшое поддержку на заднем конце: если клиент соединяется с реальным SSE, вы иметь чтобы установить тип MIME как text/event-stream
, но если вы используете xhr hack, вы должны установить его как text/plain
. У меня есть append xhr=1
URL, как показано выше (и отметка времени, чтобы остановить ее кеширование).
Техника xhr будет работать во всех браузерах, где работает SSE, если вы хотите пойти на одно решение. Одно из недостатков заключается в том, что все отправленные данные накапливаются в памяти. (Мое предложение заключается в авто-переподключение когда responseText
закончится 64KB, или что-то в этом роде.)