--- title: EventSource slug: Web/API/EventSource tags: - API - Interface - eventos translation_of: Web/API/EventSource ---
{{APIRef("Websockets API")}}
A interface EventSource
é usada para receber eventos enviados pelo servidor (server-sent events). Ele se conecta via HTTP em um servidor e recebe eventos com o formato text/event-stream
. A conexão permanece aberta até ser fechada chamando {{domxref("EventSource.close()")}}.
Assim que a conexão estiver aberta, mensagens recebidas do servidor são entregues para o seu código na forma de eventos {{event("message")}}.
Ao contrário dos WebSockets, server-sent events são unidirecionais; ou seja, mensagens são entregues em uma direção, do servidor para o cliente (por exemplo, um navegador web). Isso torna-os uma excelente escolha quando não há necessidade de enviar mensagens do cliente para o servidor. Por exemplo, EventSource
é uma abordagem útil para lidar com atualizações de status de mídias sociais, feeds de notícias, or entregar dados para um mecanismo de armazenamento do lado cliente como o IndexedDB ou o web storage.
EventSource
para receber enventos enviados pelo servidor de uma URL específica, opcionalmente no modo de credenciais.
Essa interface também herda propriedades do seu pai, {{domxref("EventTarget")}}.
CONNECTING
(0
), OPEN
(1
), ou CLOSED
(2
).EventSource
foi instanciada com credenciais cross-origin (CORS) definidas (true
) ou não (false
, o padrão).EventSource
.Essa interface herda métodos de seu pai, {{domxref("EventTarget")}}.
readyState
como CLOSED
. Se a conexão já estiver fechada, esse método não faz nada.Nesse exemplo básico, um EventSource
é criado para receber eventos do servidor; a página com o nome "sse.php"
é responsável por gerar os eventos.
var evtSource = new EventSource('sse.php');
var eventList = document.querySelector('ul');
evtSource.onmessage = function(e) {
var newElement = document.createElement("li");
newElement.textContent = "message: " + e.data;
eventList.appendChild(newElement);
}
Cada evento recebido faz com que o handler do evento onmessage
no objeto EventSource
seja executado. Ele, em contrapartida, cria um novo elemento {{HTMLElement("li")}} e escreve os dados da mensagem nele, e em seguida concatena o novo elemento na lista já presente no documento.
Nota: Você pode encontrar um exemplo completo no GitHub — veja Simple SSE demo using PHP.
Especificação | Status | Comentário |
---|---|---|
{{SpecName('HTML WHATWG', "comms.html#the-eventsource-interface", "EventSource")}} | {{Spec2('HTML WHATWG')}} |
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Suporte a EventSource | 6 | {{CompatNo}} | {{CompatGeckoDesktop("6.0")}} | {{CompatNo}} | {{CompatVersionUnknown}} | 5 |
Disponível em workers compartilhados e dedicados[1] | {{CompatVersionUnknown}} | {{CompatNo}} | {{CompatGeckoDesktop("53.0")}} | {{CompatNo}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
Feature | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Suporte a EventSource | 4.4 | 45 | {{CompatNo}} | 12 | 4.1 |
Disponível em workers compartilhados e dedicados[1] | {{CompatVersionUnknown}} | {{CompatGeckoMobile("53.0")}} | {{CompatNo}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
[1] Mas ainda não em service workers.