Introdução à SSE
SSE significa Eventos Enviados pelo Servidor, que literalmente significa que o servidor envia informações para o cliente. O SSE é um canal unidirecional,O servidor só pode enviar informações ao clienteO cliente só pode receber a solicitação SSE após acionar a primeira vez e não pode responder.
Principais características da SSE incluem:
- Facilidade de uso: O SSE utiliza formatos de dados baseados em texto, como texto simples, JSON, etc., tornando relativamente simples enviar e analisar dados.
- Comunicação unidirecional: O SSE suporta comunicação unidirecional entre o servidor e o cliente, onde o servidor pode ativamente enviar dados para o cliente, enquanto o cliente pode apenas receber os dados.
- Tempo real: O SSE estabelece conexões de longo prazo, permitindo que servidores enviem dados para os clientes em tempo real sem requisições frequentes.
SSE vs. WebSocket
WebSocket é outra tecnologia web usada para permitir comunicação bidirecional em tempo real, que difere do SSE em alguns aspectos. Aqui está uma comparação entre SSE e WebSocket:
- Direção de empurrar dados: SSE é uma comunicação unidirecional entre o servidor e o cliente, e o servidor pode ativamente enviar dados para o cliente. O WebSocket, por outro lado, é uma comunicação bidirecional, permitindo a troca de dados bidirecionais em tempo real entre o servidor e o cliente.
- Estabelecimento de Conexão: O SSE utiliza conexões longas baseadas em HTTP para estabelecer conexões por meio de requisições e respostas HTTP comuns, fazendo assim o push de dados em tempo real. WebSockets usam protocolos personalizados para permitir comunicação bidirecional estabelecendo conexões WebSocket.
- Compatibilidade: Como o SSE é baseado no protocolo HTTP, ele pode ser usado na maioria dos navegadores modernos e não requer atualizações adicionais de protocolo. WebSockets também são suportados na grande maioria dos navegadores modernos, mas podem ser problemáticos em alguns ambientes de rede especiais.
- Cenários aplicáveis: SSE é adequado para cenários onde o servidor envia dados para o cliente em tempo real, como atualizações de preço de ações, push de notícias em tempo real, etc. O WebSocket é adequado para cenários que exigem comunicação bidirecional em tempo real, como aplicativos de chat e edição colaborativa com várias pessoas.
- Dependendo das necessidades e cenários específicos do seu negócio, escolher SSE ou WebSocket depende das suas necessidades reais. Se você só precisa de um servidor para enviar dados para clientes em uma direção e quer manter tudo simples e compatível, SSE é uma boa escolha. Se você precisa alcançar comunicação bidirecional, ou se precisa de recursos e controle mais avançados, então o WebSocket pode ser uma opção melhor para suas necessidades.
Formato de fluxo de eventos SSE
Um fluxo de eventos é um fluxo simples de dados de texto que deve ser codificado no formato UTF-8. Transmissão do eventoA mensagem é separada por um par de quebras de linha。 Comentários comportamentais que começam com dois pontos são ignorados. Cada campo é representado por um nome de campo, seguido por dois pontos e, em seguida, dados de texto para o valor desse campo.
Os campos são os seguintes:
acontecimento: Uma string usada para identificar o tipo de evento. Se essa string for especificada, o navegador despacha um evento com o nome especificado para o ouvinte apropriado; O cliente deve usar addEventListener() para ouvir o evento especificado. Se uma mensagem não especificar um nome de evento, então o handler onmessage pode ser chamado.
dados: O campo de dados da mensagem. Quando o EventSource recebe múltiplas linhas consecutivas começando com data:, ele as concatena, inserindo um quebramento de linha entre elas. A quebra de linha no final é removida.
id: ID de evento, que se torna o valor da propriedade interna do objeto EventSource atual "Last Event ID".
Repetir: o tempo de se reconectar. Se a conexão com o servidor for perdida, o navegador espera o tempo especificado e então tenta reconectar. Isso deve ser um inteiro que especifica o tempo para reconexão em milissegundos. Se um valor não inteiro for especificado, o campo é ignorado.
Instância EventSource
A interface EventSource é a interface entre o conteúdo web e o servidor para enviar eventos.
Propriedade EventHandler
EventSource.onopen é chamado quando a conexão está aberta. EventSource.onmessage é chamado quando uma mensagem é recebida sem um atributo de evento. EventSource.onerror é chamado de exceções de conexão.
SSE Server (ASP.NET Core)
Crie um novo projeto ASP.NET Core com .NET 8 e o código do controlador é o seguinte:
Para o cliente que estabelece o link, envie uma mensagem ao cliente a cada segundo intervalo.
Cliente SSE
Escreva código cliente na página Visualizar usando html e js da seguinte forma:
Comece o projeto com os seguintes efeitos:
Referência:
O login do hiperlink está visível.
O login do hiperlink está visível.
O login do hiperlink está visível. |