Visão geral do ASP.NET Core SignalR
O que é SignalR?
O ASP.NET Core SignalR é uma biblioteca de código aberto que simplifica a adição de funcionalidade da Web em tempo real aos aplicativos. A funcionalidade da Web em tempo real permite que o código do lado do servidor envie conteúdo aos clientes instantaneamente.
Bons candidatos para SignalR:
- Aplicativos que exigem atualizações frequentes do servidor. Por exemplo, jogos, redes sociais, votação, leilão, mapas e aplicativos de GPS.
- Painéis e aplicativos de monitoramento. Por exemplo, painéis de empresa, atualizações de vendas instantâneas ou alertas de viagem.
- Aplicativos de colaboração. Aplicativos de quadro de comunicação e software de reunião de equipe são exemplos de aplicativos de colaboração.
- Aplicativos que exigem notificações. Redes sociais, email, chat, jogos, alertas de viagem e muitos outros aplicativos usam notificações.
SignalR fornece uma API para criar chamadas de procedimento remoto (RPC) de servidor para cliente. As RPCs invocam funções em clientes a partir do código .NET Core do lado do servidor. Há várias plataformas compatíveis, cada uma com seu respectivo SDK de cliente. Por isso, a linguagem de programação que está sendo invocada pela chamada RPC varia.
Aqui estão alguns recursos de SignalR para ASP.NET Core:
- Trata do gerenciamento de conexões automaticamente.
- Envia mensagens para todos os clientes conectados simultaneamente. Por exemplo, uma sala de chat.
- Envia mensagens para clientes ou grupos de clientes específicos.
- Escala para lidar com o aumento do tráfego.
- Protocolo de Hub SignalR
A fonte está hospedada em um repositório SignalR no GitHub.
Transportes
SignalR oferece suporte às seguintes técnicas para lidar com a comunicação em tempo real (em ordem de fallback normal):
- WebSockets
- Eventos de enviados pelo servidor
- Sondagem longa
SignalR escolhe automaticamente o melhor método de transporte que está dentro dos recursos do servidor e do cliente.
Hubs
SignalR usa hubs para se comunicar entre clientes e servidores.
Um hub é um pipeline de alto nível que permite que um cliente e um servidor chamem métodos uns nos outros. SignalR trata automaticamente do despacho entre os limites do computador, permitindo que os clientes chamem métodos no servidor e vice-versa. Você pode passar parâmetros fortemente tipados para os métodos, o que permite o model binding. SignalR fornece dois protocolos de hub integrados: um protocolo de texto baseado em JSON e um protocolo binário baseado em MessagePack. O MessagePack geralmente cria mensagens menores em comparação com o JSON. Os navegadores mais antigos devem dar suporte ao XHR nível 2 para oferecer suporte ao protocolo MessagePack.
Os hubs chamam o código do lado do cliente enviando mensagens que contêm o nome e os parâmetros do método do lado do cliente. Os objetos enviados como parâmetros de método são desserializados usando o protocolo configurado. O cliente tenta corresponder o nome a um método no código do lado do cliente. Quando o cliente encontra uma correspondência, ele chama o método e passa para ele os dados de parâmetro desserializados.
Navegadores incompatíveis com ECMAScript 6 (ES6)
SignalR tem como destino o ES6. Para navegadores que não são compatíveis com o ES6, transpile a biblioteca para o ES5. Para obter mais informações, consulte Introdução ao ES6 - Transposição de ES6 para ES5 com Traceur e Babel.