{"id":12924,"date":"2024-09-20T09:00:00","date_gmt":"2024-09-20T12:00:00","guid":{"rendered":"https:\/\/king.host\/blog\/?p=12924"},"modified":"2025-06-11T10:37:57","modified_gmt":"2025-06-11T13:37:57","slug":"server-sent-events-o-que-e-e-como-usar","status":"publish","type":"post","link":"https:\/\/king.host\/blog\/glossario\/server-sent-events-o-que-e-e-como-usar\/","title":{"rendered":"Server-Sent Events \u2014 O Que S\u00e3o e Como Usar em Suas Aplica\u00e7\u00f5es Web"},"content":{"rendered":"\n<p>A web moderna exige intera\u00e7\u00f5es cada vez mais din\u00e2micas e em tempo real e, para atender a essa demanda, surgiram diversas tecnologias que possibilitam a comunica\u00e7\u00e3o cont\u00ednua entre cliente e servidor. Os Server-Sent Events (SSE) se destacam entre elas, permitindo que o servidor envie dados continuamente ao navegador sem a necessidade de o cliente fazer novas requisi\u00e7\u00f5es.<\/p>\n\n\n\n<p>Toda essa tecnologia oferece uma maneira eficiente e simples de manter atualiza\u00e7\u00f5es constantes em tempo real em aplica\u00e7\u00f5es web. Para saber mais sobre o assunto, continue a leitura e confira:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>o que s\u00e3o Server-Sent Events;<\/li>\n\n\n\n<li>como usar os Server-Sent Events;<\/li>\n\n\n\n<li>quais s\u00e3o as vantagens de usar SSE em diferentes aplica\u00e7\u00f5es;<\/li>\n\n\n\n<li>quando utilizar Server-Sent Events.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>O que s\u00e3o Server-Sent Events?<\/strong><\/h2>\n\n\n\n<p>Os Server-Sent Events (SSE) s\u00e3o uma tecnologia que permite que um servidor envie atualiza\u00e7\u00f5es autom\u00e1ticas para um navegador por meio de uma conex\u00e3o HTTP aberta.<\/p>\n\n\n\n<p>Diferentemente de outras t\u00e9cnicas como AJAX, onde o cliente solicita atualiza\u00e7\u00f5es, o SSE mant\u00e9m essa conex\u00e3o aberta, e o servidor envia atualiza\u00e7\u00f5es assim que elas estiverem dispon\u00edveis. Essa abordagem reduz o n\u00famero de solicita\u00e7\u00f5es ao <a href=\"https:\/\/king.host\/blog\/glossario\/o-que-e-servidor\/\">servidor<\/a>, tornando o fluxo de dados mais eficiente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Como funcionam os Server-Sent Events?<\/strong><\/h3>\n\n\n\n<p>Os Server-Sent Events (SSE) funcionam de maneira simples e eficiente, permitindo que um servidor envie atualiza\u00e7\u00f5es de dados para o navegador (cliente) de forma cont\u00ednua, utilizando uma conex\u00e3o HTTP aberta.<\/p>\n\n\n\n<p>Quem j\u00e1 est\u00e1 familiarizado com SSE e utiliza esse recurso tem mais familiaridade com seus principais campos, como os seguintes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Data: utilizado para transmitir o conte\u00fado do evento;<\/li>\n\n\n\n<li>Event: serve para enviar diferentes tipos de eventos, permitindo que o cliente manipule cada um de maneira espec\u00edfica;<\/li>\n\n\n\n<li>Id e Retry: possibilitam a reconex\u00e3o autom\u00e1tica, uma das funcionalidades mais \u00fateis do SSE, garantindo que, em caso de interrup\u00e7\u00e3o da conex\u00e3o, o usu\u00e1rio receba as atualiza\u00e7\u00f5es da p\u00e1gina assim que o sinal for restabelecido, sem precisar realizar qualquer a\u00e7\u00e3o manual.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Como usar os Server-Sent Events?<\/strong><\/h2>\n\n\n\n<p>A implementa\u00e7\u00e3o de SSE nos navegadores \u00e9 feita por meio da API chamada EventSource, que cria uma conex\u00e3o persistente entre o cliente e o servidor, facilitando o envio cont\u00ednuo de dados. Veja como funciona um exemplo b\u00e1sico de uso:<\/p>\n\n\n\n<p>No lado do cliente, basta criar um novo objeto EventSource, apontando para o servidor:<\/p>\n\n\n\n<p>var source = new EventSource(&#8216;servidor.php&#8217;);<\/p>\n\n\n\n<p>source.onmessage = function(event) {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;console.log(event.data);<\/p>\n\n\n\n<p>};<\/p>\n\n\n\n<p>No lado do servidor, voc\u00ea deve enviar os dados no formato correto a fim de habilitar atualiza\u00e7\u00f5es autom\u00e1ticas e a exibi\u00e7\u00e3o, no navegador, das mensagens recebidas, sem que o cliente precise fazer novas requisi\u00e7\u00f5es:<\/p>\n\n\n\n<p>header(&#8216;Content-Type: text\/event-stream&#8217;);<\/p>\n\n\n\n<p>header(&#8216;Cache-Control: no-cache&#8217;);<\/p>\n\n\n\n<p>echo &#8220;data: Ol\u00e1, este \u00e9 um evento SSE\\n\\n&#8221;;<\/p>\n\n\n\n<p>flush();<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Quais s\u00e3o as vantagens de usar SSE em diferentes aplica\u00e7\u00f5es?<\/strong><\/h2>\n\n\n\n<p>Os eventos enviados pelo servidor oferecem diversas vantagens para desenvolvedores e usu\u00e1rios quando utilizados em <a href=\"https:\/\/king.host\/blog\/tecnologia\/aplicacao-web\/\">aplica\u00e7\u00f5es web<\/a>. Entre as principais est\u00e3o:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Efici\u00eancia<\/strong><\/h3>\n\n\n\n<p>Diferentemente do polling com AJAX, onde o cliente faz requisi\u00e7\u00f5es repetidas ao servidor, o SSE mant\u00e9m uma \u00fanica conex\u00e3o aberta e s\u00f3 envia dados quando h\u00e1 algo novo a ser transmitido.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Unidirecionalidade<\/strong><\/h3>\n\n\n\n<p>O servidor envia os dados para o cliente, mas n\u00e3o o contr\u00e1rio. Isso simplifica a comunica\u00e7\u00e3o e \u00e9 ideal para atualiza\u00e7\u00f5es de dados em tempo real, como feeds de not\u00edcias, dashboards e mensagens de log.<\/p>\n\n\n\n<p><strong><em>Leia tamb\u00e9m: <\/em><\/strong><a href=\"https:\/\/king.host\/blog\/tecnologia\/inteligencia-artificial-e-desenvolvimento-web-como-se-relacionam\/\"><strong><em>Intelig\u00eancia Artificial E Desenvolvimento Web \u2014 Como Se Relacionam?<\/em><\/strong><\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Simplicidade<\/strong><\/h3>\n\n\n\n<p>A implementa\u00e7\u00e3o do SSE \u00e9 bastante simples e requer poucos ajustes tanto no cliente quanto no servidor.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Baseado em HTTP<\/strong><\/h3>\n\n\n\n<p>O SSE funciona com o <a href=\"https:\/\/king.host\/blog\/glossario\/o-que-e-o-http2-e-quais-os-seus-beneficios\/\">protocolo HTTP<\/a>, o que facilita a integra\u00e7\u00e3o com a infraestrutura web j\u00e1 existente, sem a necessidade de usar protocolos mais complexos, como Websockets.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Reconex\u00e3o autom\u00e1tica<\/strong><\/h3>\n\n\n\n<p>Caso a conex\u00e3o seja interrompida, o navegador tenta reconectar automaticamente, garantindo uma comunica\u00e7\u00e3o cont\u00ednua.<\/p>\n\n\n\n<p><strong><em>Leia tamb\u00e9m: <\/em><\/strong><a href=\"https:\/\/king.host\/blog\/tecnologia\/otimizacao-de-banco-de-dados-aplicacoes-web\/\"><strong><em>Otimiza\u00e7\u00e3o de Banco de Dados para Aplica\u00e7\u00f5es Web<\/em><\/strong><\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Diferen\u00e7a entre SSE e outras tecnologias (AJAX e Websockets)<\/strong><\/h2>\n\n\n\n<p>Embora tanto SSE quanto Websockets permitam comunica\u00e7\u00f5es em tempo real, eles t\u00eam diferen\u00e7as significativas.<\/p>\n\n\n\n<p>O SSE \u00e9 unidirecional, j\u00e1 que o servidor envia dados ao cliente, mas o cliente n\u00e3o envia dados de volta pela mesma conex\u00e3o. Por outro lado, os Websockets permitem comunica\u00e7\u00e3o bidirecional, com envio e recebimento de dados em ambos os lados.<\/p>\n\n\n\n<p>Al\u00e9m disso, o SSE usa o protocolo HTTP\/HTTPS, enquanto Websockets usa um protocolo separado. Isso faz com que o SSE seja mais f\u00e1cil de implementar em ambientes onde o HTTP \u00e9 o padr\u00e3o, como servidores com seguran\u00e7a TLS e firewalls.<\/p>\n\n\n\n<p>Em compara\u00e7\u00e3o ao AJAX, o SSE \u00e9 muito mais eficiente para atualiza\u00e7\u00f5es constantes, pois evita o uso de m\u00faltiplas requisi\u00e7\u00f5es ao servidor.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Quando utilizar Server-Sent Events?<\/strong><\/h2>\n\n\n\n<p>Os Server-Sent Events s\u00e3o ideais para aplica\u00e7\u00f5es que requerem atualiza\u00e7\u00f5es frequentes em tempo real, como:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/king.host\/blog\/empreendedorismo\/ferramentas-para-gestao-de-redes-sociais\/\">feeds de redes sociais<\/a>, onde as atualiza\u00e7\u00f5es constantes de novos posts ou intera\u00e7\u00f5es precisam ser mostradas automaticamente;<\/li>\n\n\n\n<li><a href=\"https:\/\/king.host\/blog\/tecnologia\/dashboard-node-js-socketio-vuejs\/\">dashboards de monitoramento<\/a>, a fim de acompanhar m\u00e9tricas em tempo real sem sobrecarregar o servidor com requisi\u00e7\u00f5es;<\/li>\n\n\n\n<li>aplica\u00e7\u00f5es de chat ou suporte online, onde \u00e9 necess\u00e1rio atualizar mensagens enviadas por outros usu\u00e1rios automaticamente.<\/li>\n<\/ul>\n\n\n\n<p>De maneira geral, o SSE \u00e9 a solu\u00e7\u00e3o mais pr\u00e1tica e eficiente para casos onde \u00e9 necess\u00e1rio apenas o envio de dados do servidor para o cliente e o HTTP \u00e9 o protocolo de escolha.<\/p>\n\n\n\n<p><strong><em>Leia tamb\u00e9m: <\/em><\/strong><a href=\"https:\/\/king.host\/blog\/servicos-de-hospedagem\/servidor-para-sites-e-hospedagem-conheca-diferencas\/\"><strong><em>Qual \u00c9 A Diferen\u00e7a De Servidor Para Sites E Hospedagem?<\/em><\/strong><\/a><\/p>\n\n\n\n<p>Como vimos at\u00e9 aqui, os Server-Sent Events (SSE) s\u00e3o uma excelente ferramenta para criar aplica\u00e7\u00f5es web que necessitam de atualiza\u00e7\u00f5es constantes e em tempo real, oferecendo simplicidade de implementa\u00e7\u00e3o e efici\u00eancia no uso de recursos.<\/p>\n\n\n\n<p>Nesse sentido, se voc\u00ea busca integrar essa funcionalidade em seus projetos, o SSE \u00e9 uma alternativa poderosa que, combinada com outras tecnologias web, como o <a href=\"https:\/\/king.host\/blog\/tecnologia\/o-que-e-pwa\/\">PWA<\/a>, pode elevar a experi\u00eancia do usu\u00e1rio a um novo n\u00edvel.<\/p>\n\n\n\n<p>Quer ter acesso a mais conte\u00fados sobre desenvolvimento web e outras tecnologias? <a href=\"https:\/\/king.host\/blog\/empreendedorismo\/palestras-online-conexao-kinghost\/\">Aproveite para conhecer e explorar o Conex\u00e3o KingHost<\/a>! Nele, voc\u00ea poder\u00e1 encontrar materiais educativos gratuitos sobre inova\u00e7\u00e3o digital, desenvolvimento, e empreendedorismo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/conexaokinghost.eadplataforma.app\/curso\/criar-app-com-ia?utm_source=lab&amp;utm_medium=banner-artigo&amp;utm_campaign=banner-artigo-server-sent-events-o-que-e-e-como-usar\" target=\"_blank\" rel=\"noopener\"><img fetchpriority=\"high\" decoding=\"async\" width=\"910\" height=\"340\" src=\"https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2025\/04\/Banner-News-02.webp\" alt=\"banner ME criar app com ia\" class=\"wp-image-41453\" title=\"\" srcset=\"https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2025\/04\/Banner-News-02.webp 910w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2025\/04\/Banner-News-02-300x112.webp 300w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2025\/04\/Banner-News-02-780x291.webp 780w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2025\/04\/Banner-News-02-768x287.webp 768w\" sizes=\"(max-width: 910px) 100vw, 910px\" \/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Os Server-Sent Events (SSE) permitem que o servidor envie dados automaticamente ao navegador, sem a necessidade de m\u00faltiplas requisi\u00e7\u00f5es. Confira o artigo e saiba mais sobre o assunto.<\/p>\n","protected":false},"author":277,"featured_media":12951,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1308],"tags":[1363],"class_list":["post-12924","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-glossario","tag-tecnologia"],"_links":{"self":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts\/12924","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/users\/277"}],"replies":[{"embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/comments?post=12924"}],"version-history":[{"count":19,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts\/12924\/revisions"}],"predecessor-version":[{"id":41805,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts\/12924\/revisions\/41805"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/media\/12951"}],"wp:attachment":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/media?parent=12924"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/categories?post=12924"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/tags?post=12924"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}