Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 4163|Resposta: 4

[.NET Core] SSE (1) usa ASP.NET Core como servidor SSE

[Copiar link]
Postado em 2024-4-5 11:54:12 | | | |
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.




Anterior:Uma comparação simples entre o cache Garnet e o Redis desenvolvida com .NET
Próximo:JS escuta a combinação de teclas ctrl + enter
 Senhorio| Postado em 2024-4-5 12:03:28 |
A API padrão EventSource do navegador impõe algumas restrições sobre os tipos de requisições permitidas: as únicas URLs de parâmetros permitidas para passar são e withCredentials, portanto:

Você não pode passar no corpo da requisição: Você deve codificar todas as informações necessárias para executar a solicitação na URL, que é limitada a 2000 caracteres na maioria dos navegadores.
Você não pode passar cabeçalhos de requisição personalizados
Você só pode fazer uma solicitação GET - nenhum outro método pode ser especificado.
Se a conexão for cortada, você não tem controle sobre a política de retentativas: o navegador tenta silenciosamente algumas vezes e depois para, o que não é suficiente para nenhum tipo de aplicação robusta.


fetch-event-source

A biblioteca oferece uma interface alternativa baseada na API Fetch para usar eventos enviados pelo servidor. É totalmente compatível com o formato de fluxo de eventos, então, se você já tem um servidor que emite esses eventos, pode usá-lo como antes. No entanto, agora você tem mais controle sobre pedidos e respostas

O login do hiperlink está visível.
Postado em 14-11-2024 14:34:25 |
douto
 Senhorio| Postado em 25-12-2024 16:36:44 |
Small slag Postado em 2024-4-5 12:03
A API padrão EventSource do navegador impõe algumas restrições sobre os tipos de requisições permitidas: a única URL de parâmetro permitida para passar é withCredentia ...

Compile o pacote NPM em um script JavaScript pronto para navegador
https://www.itsvse.com/thread-10762-1-1.html
 Senhorio| Postado em 25-12-2024 16:48:45 |
SSE (2) problema de reconexão da fonte do evento de busca após trocar de aba do navegador
https://www.itsvse.com/thread-10906-1-1.html
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com