Guia Completo: Blazor e SignalR para Apps em Tempo Real
Tutorial Completo de SignalR: Crie um Chat em Tempo Real
Aprenda a criar um sistema de chat em tempo real usando SignalR, a biblioteca .NET🚀 Scale Out com Redis: Atenda Milhões de Conexões!Integre o Redis com SignalR no .NET e distribua mensagens entre servidores, alcançando escalabilidade e alta performance em tempo real. que simplifica a comunicação bidirecional entre servidor e clientes.
- Exemplo prático
📝 Logging com Serilog: Registre Tudo como um Detetive de Bugs!Aprenda a usar Serilog em .NET para registrar logs estruturados, identificar erros e enriquecer informações, transformando seu código num enigma solucionável. para iniciantes e devs experientes que querem dominar a comunicação em tempo real na web.
🔍 O que é SignalR?🔗
O SignalR🛡️ Segurança em SignalR: Autenticação e Autorização!Descubra como implementar JWT e autorização com roles e claims no SignalR, garantindo segurança e controle de acessos em tempo real. é uma biblioteca do ASP.NET Core que facilita a criação de aplicações em tempo real
🚀 Scale Out com Redis: Atenda Milhões de Conexões!Integre o Redis com SignalR no .NET e distribua mensagens entre servidores, alcançando escalabilidade e alta performance em tempo real.. Ele utiliza tecnologias como WebSockets, Server-Sent Events (SSE) e
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. Long Polling para manter uma conexão persistente entre o cliente e o servidor. Isso permite que o servidor envie dados para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! os clientes instantaneamente, sem que eles precisem solicitar manualmente.
💡 Por que usar SignalR?
- Comunicação em Tempo Real: Ideal para chats, notificações, dashboards ao vivo e jogos multiplayer
🌍 Unity Multiplayer: Use Mirror para Jogos Online!Crie jogos multiplayer incríveis com Unity e Mirror. Configure o NetworkManager, sincronize dados e otimize a performance para um game impecável..
- Escalabilidade
📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos.: O SignalR
🛡️ Segurança em SignalR: Autenticação e Autorização!Descubra como implementar JWT e autorização com roles e claims no SignalR, garantindo segurança e controle de acessos em tempo real. pode ser escalado horizontalmente usando backplanes como o Redis
🚀 Scale Out com Redis: Atenda Milhões de Conexões!Integre o Redis com SignalR no .NET e distribua mensagens entre servidores, alcançando escalabilidade e alta performance em tempo real..
- Simplicidade: A API é fácil de usar e integra-se perfeitamente com o ASP.NET Core
🌍 Projeto: API de E-Commerce com ASP.NET Core e SQL Server!Aprenda a construir uma API robusta para e-commerce com ASP.NET Core, EF Core, JWT e Swagger, validando suas habilidades em um projeto prático real..
👉 Como o SignalR Funciona?🔗
SignalR🛡️ Segurança em SignalR: Autenticação e Autorização!Descubra como implementar JWT e autorização com roles e claims no SignalR, garantindo segurança e controle de acessos em tempo real. é como um walkie-talkie digital:
- WebSocket (prioridade): Conexão persistente e
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. full-duplex.
- Fallbacks automáticos: Server-Sent Events (SSE), Long Polling.
- Hubs: Canais de comunicação para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! grupos/todos.
- Clientes suportados: JavaScript, C#, Java, Swift.
// Analogia: Hub = Sala de Chat
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
// Broadcast para TODOS os clientes
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
👉 Configurando o Projeto🔗
1. Novo projeto🤝 GitHub Básico: Versionamento para Iniciantes!Descubra como o GitHub facilita colaboração, versionamento e organização de código com este tutorial prático e essencial para desenvolvedores iniciantes. → ASP.NET Core
🌍 Projeto: API de E-Commerce com ASP.NET Core e SQL Server!Aprenda a construir uma API robusta para e-commerce com ASP.NET Core, EF Core, JWT e Swagger, validando suas habilidades em um projeto prático real. Web App.
dotnet add package Microsoft.AspNetCore.SignalR
3. Registre o SignalR🛡️ Segurança em SignalR: Autenticação e Autorização!Descubra como implementar JWT e autorização com roles e claims no SignalR, garantindo segurança e controle de acessos em tempo real. no
Program.cs
:
builder.Services.AddSignalR();
app.MapHub<ChatHub>("/chatHub");
👉 Criando o Hub🔗
Hub = Central de Mensagens
public class ChatHub : Hub
{
// Método chamado pelos clientes
public async Task SendMessage(string user, string message)
{
// Envia para todos conectados
await Clients.All.SendAsync("ReceiveMessage", user, message);
// Envia para um grupo específico (ex: "DevsDotNet")
// await Clients.Group("DevsDotNet").SendAsync(...);
}
// Gerenciamento de Conexões
public override async Task OnConnectedAsync()
{
await Groups.AddToGroupAsync(Context.ConnectionId, "DevsDotNet");
await base.OnConnectedAsync();
}
}
👉 Cliente Web🔗
HTML + JavaScript (client-side):
<script src="https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/8.0.0/signalr.min.js">
</script> <script>
const connection = new signalR.HubConnectionBuilder() .withUrl("/chatHub") .build(); // Recebe mensagens do servidor connection.on("ReceiveMessage", (user, message) => { const li = document.createElement("li"); li.textContent = `${user}: ${message}`; document.getElementById("messagesList").appendChild(li); }); // Inicia conexão async function start() { try { await connection.start(); console.log("Conectado ao SignalR!"); } catch (err) { console.error(err); setTimeout(start, 5000); } }; start(); // Envia mensagem document.getElementById("sendButton").addEventListener("click", async () => { const user = document.getElementById("userInput").value; const message = document.getElementById("messageInput").value; await connection.invoke("SendMessage", user, message); });
</script>
👉 Interface do Chat🔗
HTML Básico:
<div>
<input type="text" id="userInput" placeholder="Seu nome" />
<input type="text" id="messageInput" placeholder="Sua mensagem" />
<button id="sendButton">Enviar</button>
</div>
<ul id="messagesList"></ul>
Estilização Rápida (CSS):
#messagesList {
list-style-type: none;
padding: 0;
}
#messagesList li {
padding: 8px;
margin: 5px;
background: #f0f0f0;
border-radius: 4px;
}
👉 Executando e Testando🔗
1. Execute🔍 Comandos: Desacople Ações dos Botões!Aprenda a implementar comandos em C# para desacoplar lógica e interface usando MVVM, com exemplos práticos e dicas para melhor testabilidade e manutenção. o projeto:
F5
no Visual Studio🛠️ Instalação do Visual Studio: Prepare sua Nave para Decolar!Prepare seu ambiente de desenvolvimento com o Visual Studio em uma aventura C#. Este tutorial prático ensina a instalar, configurar e personalizar sua IDE..
2. Abra múltiplas abas/navegadores.
3. Envie mensagens → todas as abas atualizam em tempo real!
Teste de Stress (local):
# Use o Apache Bench para simular 100 requisições
ab -n 100 -c 10 http://localhost:5000/chatHub
👉 Segurança Básica🔗
1. HTTPS: Ative em Program.cs
:
app.UseHttpsRedirection();
2. Autenticação🔑 Autenticação JWT: Proteja sua API com Tokens!Descubra como implementar autenticação JWT no ASP.NET Core com exemplos práticos, boas práticas de segurança e dicas para proteger suas APIs de forma eficiente.: Restrinja acesso a usuários logados:
[Authorize]
public class ChatHub : Hub { ... }
3. CORS: Configure políticas restritivas:
builder.Services.AddCors(options =>
options.AddPolicy("ChatPolicy", policy =>
policy.WithOrigins("https://seusite.com")));
👉 Deploy na Nuvem🔗
1. Crie um recurso📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos. Azure SignalR Service
⚡ Azure Functions + SignalR: Serverless em Tempo Real!Aprenda a criar aplicativos em tempo real usando Azure Functions e SignalR. Desenvolva soluções serverless escaláveis e inovadoras sem complexidade. no portal.
"Azure": {
"SignalR": {
"ConnectionString": "Endpoint=..."
}
}
3. Atualize Program.cs
:
builder.Services.AddSignalR().AddAzureSignalR();
👉 Próximos Passos🔗
Aprimore seu chat:
- [ ] Lista
📦 List<T>: Dinamismo além dos Arrays!Descubra como utilizar List<T> em C# de forma eficiente. Aprenda a criar, manipular e otimizar listas para diferentes cenários com exemplos práticos. de usuários online.
- [ ] Mensagens privadas (1:1).
- [ ] Upload de arquivos.
- [ ] Notificações de digitação.
🎯 Conclusão🔗
Com o SignalR, você pode criar aplicações em tempo real🚀 Scale Out com Redis: Atenda Milhões de Conexões!Integre o Redis com SignalR no .NET e distribua mensagens entre servidores, alcançando escalabilidade e alta performance em tempo real. de forma simples e eficiente. Este artigo cobriu o básico para criar um chat em tempo real, mas as possibilidades são infinitas. Agora é sua vez de explorar e criar algo incrível!
Se você gostou deste artigo, compartilhe com seus colegas e📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. continue explorando o mundo do .NET e C#. 🚀
Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.
Referências🔗
- .NET Documentation: learn.microsoft.com/pt-br/dotnet/
- Awesome .NET: github.com/quozd/awesome-dotnet
- C# Language Specification: learn.microsoft.com/pt-br/dotnet/csharp/language-reference/language-specification/
- GitHub: Microsoft/.NET: github.com/dotnet
- Microsoft Learn: C# e .NET: learn.microsoft.com/pt-br/dotnet/csharp/