Blazor集成SignalR分三步:服务端定义Hub并注册、客户端安装包并建立连接、收发消息;推荐WASM模式以节省服务器资源;需注意路径大小写、CORS配置及开发期错误设置。

Blazor 集成 SignalR 主要分服务端 Hub 定义、客户端连接、消息收发三步,WebAssembly(WASM)和 Server 两种模式逻辑一致,但推荐用 WASM 模式——避免服务器端重复连接消耗资源。
在 ASP.NET Core 后端项目中新建一个继承 Hub 的类,比如 ChatHub:
public async Task 声明,可被客户端调用Clients.All.SendAsync 或 Clients.Client(connectionId).SendAsync 推送消息Program.cs 中注册 SignalR 服务和 Hub 端点:builder.Services.AddSignalR().AddMessagePackProtocol();<br>app.MapHub<ChatHub>("/chatHub");在 Blazor WebAssembly 项目中,先安装 NuGet 包:
Microsoft.AspNetCore.SignalR.ClientMicrosoft.AspNetCore.SignalR.Protocols.MessagePack
在组件或服务中创建连接:
private HubConnection hubConnection;<br>hubConnection = new HubConnectionBuilder()<br> .WithUrl(navigationManager.ToAbsoluteUri("/chatHub"))<br> .Build();<br>await hubConnection.StartAsync();连接建立后,就能双向通信了:
hubConnection.On<t>("MethodName", handler)</t> 监听服务器推送,例如:On<string>("ReceiveMessage", msg => { messages.Add(msg); StateHasChanged(); })</string>
hubConnection.InvokeAsync("MethodName", args...) 调用服务器方法,参数类型和顺序必须严格匹配OnInitializedAsync 中启动连接,在 DisposeAsync 中显式停止并释放连接几个容易出错的地方:
MapHub 的路径完全一致(含大小写),且不能漏掉前导斜杠EnableDetailedErrors = true 仅用于开发,上线前关闭HubConnectionBuilder 到组件属性,应通过服务封装或手动构建以上就是Blazor 怎么集成 SignalR的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号