Get to know MDN better
This page was translated from English by the community. Learn more and join the MDN Web Docs community.
This feature is well established and works across many devices and browser versions. It’s been available across browsers since январь 2020 г..
* Some parts of this feature may have varying levels of support.
Примечание: Эта возможность доступна в Web Workers.
EventSource — это интерфейс веб-контента для отправляемых сервером событиям.
Экземпляр EventSource открывает постоянное соединение с HTTP-сервером, который отправляет события в формате text/event-stream. Соединение остаётся открытым до тех пор, пока не будет закрыто вызовом EventSource.close().
EventTarget EventSourceПосле открытия соединения входящие сообщения с сервера доставляются в клиентский код в виде событий. Если во входящем сообщении есть поле события, то вызывается событие, совпадающее со значением этого поля. Если поле события отсутствует, то запускается общее событие message.
В отличие от WebSockets, отправляемые сервером события являются однонаправленными, то есть сообщения с данными доставляются в одном направлении, от сервера к клиенту (например, веб-браузеру пользователя). Это делает их отличным выбором, когда нет необходимости отправлять данные в форме сообщений от клиента к серверу. Например, EventSource будет полезным для реализации таких функций, как обновление новостной ленты и статуса в социальных сетях, доставки данных в механизм хранилища на стороне клиента, такой как IndexedDB или веб-хранилища.
Предупреждение:Без использования HTTP/2, максимальное количество открытых SSE-соединений может быть ограничено, что может быть особенно заметным при открытии нескольких вкладок, поскольку ограничение действует на браузер и установлено в очень низкое значение (6). Эта проблема отмечена как «Не будет исправлена» в Chrome и Firefox. Ограничение действует на связку «браузер + домен», то есть можно открыть только 6 SSE-соединений к www.example1.com для всех вкладок и ещё 6 SSE-соединений к www.example2.com (согласно StackOverflow). При использовании HTTP/2, максимальное количество одновременных HTTP-потоков согласовывается между сервером и клиентом (по умолчанию оно равно 100).
Создаёт новый EventSource для обработки отправленных сервером событий с указанного URL-адреса, при необходимости с учётными данными.
Этот интерфейс наследует свойства своего родителя, EventTarget.
EventSource.readyState Только для чтенияЧисло, представляющее состояние соединения. Допустимые значения: CONNECTING (0), OPEN (1) или CLOSED (2).
EventSource.url Только для чтенияСтрока, представляющая URL-адрес источника.
EventSource.withCredentials Только для чтенияЛогическое значение, указывающее, был ли объект EventSource создан с кросс-доменными (CORS) учётными данными (true) или нет (false, по умолчанию).
Этот интерфейс наследует методы своего родителя, EventTarget.
EventSource.close()Закрывает соединение и устанавливает атрибут readyState в значение CLOSED. Если соединение было уже закрыто, то этот метод ничего не делает.
Возникает, когда не удаётся установить соединение с источником событий.
messageВозникает при получении данных от источника событий.
openВозникает при открытии соединения с источником событий.
Кроме того, источник событий может отправлять сообщения с полем события, что будет вызывать именованные события, использовать которые можно по значению этого поля.
В этом общем примере объект EventSource создаётся для получения неименованных событий, получаемых от сервера. Страница с именем sse.php отвечает за генерацию событий.
Каждое полученное событие запускает обработчик onmessage объекта EventSource, который, создаёт новый элемент <li>, записывает в него текст сообщения и добавляет его в элемент списка, который был создан заранее.
Примечание: Полный код этого примера можно найти на GitHub, смотрите Simple SSE demo using PHP.
Для обработки именованных событий необходимо установить обработчик для каждого типа события.
| HTML # the-eventsource-interface |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 24 мар. 2025 г. by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.