Por que foram introduzidos eventos server-sent no HTML5?
sobes.tech IA
Resposta da IA
Os eventos enviados pelo servidor (SSE) foram introduzidos no HTML5 para transmitir dados do servidor para o cliente numa direção, em tempo real, através de uma ligação HTTP. Isto permite receber atualizações do servidor sem que o cliente tenha que enviar pedidos constantemente (sondagem). As principais vantagens em comparação com outras tecnologias:
- Simplicidade: Utilizam uma ligação HTTP normal, o que facilita a integração com tecnologias e infraestruturas web existentes.
- Eficiência: Permitem que o servidor envie dados quando estão prontos, reduzindo a carga na rede e no servidor em comparação com a sondagem frequente.
- Reconexão automática: O navegador tenta automaticamente restabelecer a ligação em caso de interrupção.
- Processamento incorporado: A API
EventSourceno navegador fornece uma interface simples para trabalhar com eventos e dados.
Exemplo de uso no cliente:
// Criar um novo objeto EventSource, indicando a URL do servidor para SSE
const eventSource = new EventSource('/updates');
// Processar o evento 'message' - receção de dados do servidor
eventSource.onmessage = function(event) {
// Mostrar os dados recebidos na consola
console.log('Novos dados do servidor:', event.data);
};
// Processar erros de ligação
eventSource.onerror = function(error) {
console.error('Ocorreu um erro:', error);
};
No servidor, a resposta deve ter o tipo MIME text/event-stream e ser formatada da seguinte forma:
data: Esta é a primeira linha de dados\n
data: Esta é a segunda linha\n\n
Cada mensagem termina com dois caracteres de nova linha (\n\n). Cada linha de dados começa com data: . Podem também existir outros campos, como event: para indicar o tipo de evento ou id: para o identificador da mensagem.
Os eventos enviados pelo servidor são uma boa escolha para cenários onde o servidor deve enviar um fluxo de atualizações ao cliente, como notificações, feeds de notícias, cotações de ações ou resultados de processos longos. São mais simples de implementar do que WebSockets para comunicação unidirecional.