Логотип schoolsw3.com
Учебники Справочники Упражнения КАК? Меню
Создать
Редактор Поддержка Форум

×
Учебники
Справочники
Упражнения
Пожертвовать Обновление Реклама Видео Магазин

HTML Учебник

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

HTML Формы

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

HTML Графика

HTML Холст HTML SVG

HTML Медиа

HTML Медиа HTML5 Видео HTML5 Аудио HTML Плагины HTML YouTube

HTML APIы

HTML5 Геолокация HTML5 Перетаскивание HTML5 Веб хранилище HTML5 Веб работник HTML5 SSE

HTML Примеры

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

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

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

HTML5 События отправлено сервером API



Server-Sent Events (SSE) Разрешить веб странице получать обновления с сервера.

Server-Sent Events - Односторонний обмен сообщениями

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

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

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


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

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

API
SSE 6.0 79.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>";
};
Попробуйте сами »

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

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

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

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

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


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

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

Синтаксис потока событий на стороне сервера прост. Установите header "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: Серверное время: {$time}\n\n";
flush();
?>

Код на ASP (VB) (demo_sse.asp):

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

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

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

Объект EventSource

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

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