САЙТ ДЛЯ ВЕБ РАЗРАБОТЧИКОВ НА РУССКОМ ЯЗЫКЕ
×

HTML5 Учебник

HTML ГлавнаяHTML ВведениеHTML РедакторыHTML ОсновныеHTML ЭлементыHTML АтрибутыHTML ЗаголовкиHTML ПараграфыHTML СтилиHTML ФорматированиеHTML ЦитированиеHTML КомментарииHTML ЦветаHTML c CSSHTML СсылкиHTML ИзображенияHTML ТаблицыHTML СпискиHTML БлокиHTML КлассыHTML ИдентификаторыHTML ФреймыHTML JavaScriptHTML Путь к ФайлуHTML ГлаваHTML МакетHTML АдаптивныйHTML Компьютерный кодHTML ОбъектыHTML СимволыHTML КодировкаHTML URL КодированиеHTML XHTML

HTML Формы

HTML ФормыHTML Элементы формыHTML Тип вводаHTML Атрибуты ввода

HTML5

HTML5 ВведениеHTML5 ПоддержкаHTML5 Новые ЭлементыHTML5 СемантикаHTML5 МиграцияHTML5 Синтасис

HTML Графика

HTML CanvasHTML SVGHTML Google Карта

HTML Медиа

HTML МедиаHTML ВидеоHTML АудиоHTML ОбъектыHTML YouTube

HTML API

HTML ГеолокацияHTML ПеретаскиваниеHTML Веб ХранилищеHTML Веб РаботникHTML СОС

HTML Примеры

HTML ПримерыHTML ВикторинаHTML УпражненияHTML СертификатHTML ЗаключениеHTML Возможности

HTML Справочники

HTML Список ТеговHTML АтрибутыHTML ГлобальныеHTML СобытияHTML ЦветаHTML ХолстHTML Аудио/ВидеоHTML ДекларацииHTML Набор КодировокHTML URL КодHTML Коды языкаHTML Коды странHTTP СообщенияHTTP МетодыКовертер PX в EMКлавишные комбинации

HTML СОС



События, отправленные сервером, позволяют веб странице получать обновления с сервера.


События Отправленные Сервером - Односторонний обмен сообщениями

Отправленное сервером событие - это когда веб страница автоматически получает обновления с сервера.

Это также было возможно раньше, но веб страница должна была спросить, доступны ли какие-либо обновления. При отправке событий сервером обновления поступают автоматически.

Примеры: Facebook/Twitter обновления, обновления цена акций, новостей, спортивных результатов и т. д.


Поддержка браузеров

Числа в таблице указывают первую версию браузера, которая полностью поддерживает события, отправленные сервером.

API
СОС 6.0 Не поддерживает 6.0 5.0 11.5

Получать уведомления о событиях, отправленных сервером

Объект EventSource используется для получения уведомлений о событиях, отправляемых сервером:

Пример

var source = new EventSource("demo_sse.php");
source.onmessage = function(event) {
    document.getElementById("result").innerHTML += event.data + "<br>";
};
Редактор кода »

Объяснение примера:

  • Создайте новый объект источника событий и укажите URL страницы, отправляющей обновления, в этом примере ("demo_sse.php")
  • При каждом получении обновления происходит событие onmessage
  • Когда происходит событие onmessage, поместите полученные данные в элемент с id="result"

Проверка поддержки событий отправленных сервером

В приведенном выше примере было несколько дополнительных строк кода для проверки поддержки браузером событий, отправляемых сервером:

if(typeof(EventSource) !== "undefined") {
    // Да! Браузер поддерживает события отправленных сервером!
    // Некоторый код.....
} else {
    // Извините! Нет поддержки событий, отправленных сервером.
}

Пример кода на стороне сервера

Для примера выше, чтобы работать, вам нужен сервер, способный отправлять обновления данных (например, php или asp).

Синтаксис потока событий на стороне сервера прост. Установите "Content-Type" header к "text/event-stream". Теперь вы можете начать отправлять потоки событий.

Код в PHP (demo_sse.php):

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

$time = date('r');
echo "data: время сервера: {$time}\n\n";
flush();
?>

Код в php (VB) (demo_sse.asp):

<%
Response.ContentType = "text/event-stream"
Response.Expires = -1
Response.Write("data: время сервера: " & now())
Response.Flush()
%>

Объяснение кода:

  • Установите "Content-Type" header в "text/event-stream"
  • Укажите, что страница не должна кэшироваться
  • Выходные данные для отправки (Всегда начните с "data: ")
  • Сбросьте выходные данные обратно на веб страницу

Объект EventSource

В приведенных выше примерах мы использовали событие onmessage для получения сообщений. Но доступны и другие события:

События Описание
onopen При открытии соединения с сервером
onmessage При получении сообщения
onerror При возникновении ошибки