Серверная Sent Events позволяет веб-странице, чтобы получить обновление с сервера.
Серверный Sent Events - One Way сообщения
Событие сервера отправлено, когда веб-страница автоматически получает обновления с сервера.
Это было возможно раньше, но веб-страница будет иметь, чтобы спросить, какие обновления были доступны. С сервером посланных событиями, обновления приходят автоматически.
Примеры: Facebook/Twitter обновление, обновление цен акций, новости, спортивные результаты и т.д.
Поддержка браузеров
Числа в таблице указать первую версию браузера, которая полностью поддерживает серверное посланное событие.
API | |||||
---|---|---|---|---|---|
SSE | 6,0 | Не поддерживается | 6,0 | 5.0 | 11,5 |
Получение уведомлений о событиях сервера-Sent
EventSource объект используется для получения уведомлений о событиях сервера посланным:
пример
var source = new EventSource("demo_sse.php");
source.onmessage = function(event) {
document.getElementById("result").innerHTML += event.data + "<br>";
};
Попробуй сам " Объяснение примера:
- Создать новый EventSource объект, а также указать URL - адрес страницы , отправляющего обновления (in this example "demo_sse.php")
- Каждый раз , когда обновление будет получено, onmessage происходит событие
- Когда onmessage происходит событие, поместить принятые данные в элемент с id="result"
Проверка сервера-Sent Events Поддержка
В tryit примера выше были некоторые дополнительные строки коды , чтобы проверить поддержку браузера для сервера посланных событий:
if(typeof(EventSource) !== "undefined") {
// Yes! Server-sent events support!
// Some code.....
} else {
// Sorry! No server-sent events support..
}
Серверный Пример кода
Для примера выше, чтобы работать, вам нужен сервер, который может отправлять обновление данных (например, PHP или ASP).
Синтаксис потока событий на стороне сервера просто. Установите "Content-Type" заголовок "text/event-stream" . Теперь вы можете начать посылать потоки событий.
Код в PHP (demo_sse.php) :
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$time = date('r');
echo "data: The server time is: {$time}\n\n";
flush();
?>
Код в ASP (VB) (demo_sse.asp) :
<%
Response.ContentType = "text/event-stream"
Response.Expires = -1
Response.Write("data: The server time is: " & now())
Response.Flush()
%>
Код пояснил:
- Установите "Content-Type" заголовок "text/event-stream"
- Укажите, что страница не должна кэшировать
- Выходные данные для отправки ( Always start with "data: ")
- Промойте выходные данные обратно на веб-странице
EventSource объекта
В приведенных выше примерах мы использовали OnMessage события, чтобы получить сообщения. Но другие события также доступны:
Мероприятия | Описание |
---|---|
onopen | Когда соединение с сервером открыт |
onmessage | Когда сообщение получено |
onerror | При возникновении ошибки |