SignalR是ASP.NET的实时通信框架,自动管理连接并支持双向通信,通过Hub类实现消息广播,结合JavaScript客户端可快速构建聊天室等实时应用。

SignalR 是 ASP.NET 的一个开源库,它简化了在 Web 应用中添加实时功能的过程。通过 SignalR,服务器可以主动向客户端推送数据,而不需要客户端频繁轮询。这使得开发聊天应用、实时仪表盘、通知系统等变得非常高效和简单。
SignalR 是什么?
SignalR 是 C# 中用于实现 Web 实时通信的框架,属于 ASP.NET 生态的一部分。它封装了底层通信细节(如 WebSocket、Server-Sent Events、长轮询等),自动选择最佳传输方式,让开发者专注于业务逻辑。
主要特点包括:
自动连接管理:客户端连接、断开、重连都由 SignalR 自动处理。双向通信:服务器可随时调用客户端方法,客户端也能调用服务器端方法。跨平台支持:支持 .NET 客户端、JavaScript 客户端,甚至可通过 REST 调用触发广播。高扩展性:可集成 Redis 等后端实现多服务器负载均衡。
创建一个简单的 SignalR 实时聊天示例
下面通过一个基础聊天室例子,演示如何使用 SignalR 实现服务端与前端的实时通信。
1. 创建 ASP.NET Core 项目
使用命令行创建新项目:
dotnet new web -n ChatApp
进入项目目录并添加 SignalR 包(.NET 6+ 已内置):
cd ChatApp
2. 创建 Hub 类
Hub 是 SignalR 的核心类,负责处理客户端和服务端之间的消息传递。
新建文件 ChatHub.cs:
using Microsoft.AspNetCore.SignalR;public class ChatHub : Hub{public async Task SendMessage(string user, string message){await Clients.All.SendAsync("ReceiveMessage", user, message);}}
上面代码定义了一个 SendMessage 方法,当被调用时,会将消息广播给所有连接的客户端(通过 ReceiveMessage 方法)。
3. 配置 Startup(或 Program.cs)
在 Program.cs 中注册 SignalR 服务和路由:
var builder = WebApplication.CreateBuilder(args);// 添加 SignalR 服务builder.Services.AddSignalR();
var app = builder.Build();
app.UseStaticFiles(); // 支持 wwwroot 下的静态文件
app.MapHub("/chathub");
app.Run();
4. 添加前端页面
在项目根目录创建 wwwroot/index.html:
SignalR 聊天室
const connection = new signalR.HubConnectionBuilder() .withUrl("/chathub") .build(); // 启动连接 connection.start().catch(err => console.error(err)); // 接收消息 connection.on("ReceiveMessage", function (user, message) { const li = document.createElement("li"); li.textContent = `${user}: ${message}`; document.getElementById("messagesList").appendChild(li); }); // 发送消息到服务器 function sendMessage() { const user = document.getElementById("userInput").value; const message = document.getElementById("messageInput").value; connection.invoke("SendMessage", user, message).catch(err => console.error(err)); }
以上就是C#的SignalR技术是什么?实现Web实时通信的C# SignalR框架教程的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1442172.html
微信扫一扫
支付宝扫一扫