C#-网络通讯框架(三)-SignalR(SignalRCore版)_Net7
一、概念
1、什么是 SignalR?
ASP.NET Core SignalR 是一个开放源代码库,可用于简化向应用添加实时 Web 功能。 实时 Web 功能使服务器端代码能够将内容推送到客户端。
2、适合 SignalR 的场景
- 需要从服务器进行高频率更新的应用。 示例包括游戏、社交网络、投票、拍卖、地图和 GPS 应用。
- 仪表板和监视应用。 示例包括公司仪表板、即时销售更新或旅行警报。
- 协作应用。 协作应用的示例包括白板应用和团队会议软件。
- 需要通知的应用。 社交网络、电子邮件、聊天、游戏、旅行警报和很多其他应用都需使用通知。
3、SignalR实时通信使用的传输技术(以下为使用的先后选择顺序,自动选择服务器和客户端能力范围内的最佳传输方法):
- WebSockets
- Server-Sent Events
- 长轮询
4、SignalR支持的功能
- 自动处理连接管理。
- 同时向所有连接的客户端发送消息。 例如聊天室。
- 向特定客户端或客户端组发送消息。
- 对其进行缩放,以处理不断增加的流量。
- SignalR中心协议(SignalR 使用 Hubs(中心协议) 在客户端和服务器之间进行通信;内置中心协议:基于JSON的文本协议 和 基于MessagePack 的二进制协议, 旧版浏览器必须支持XHR级别2 才能提供 MessagePack 协议支持。)
5、SignalR服务器与客户端标准:
服务器标准:支持 ASP.NET Core 支持的任何服务器平台;如果服务器运行 IIS中,则 WebSockets 传输需要 Windows Server 2012 或更高版本上的 IIS 8.0 或更高版本。
Web客户端标准:SignalR 面向 ES6。 对于不支持 ES6 的浏览器,请将库转译为 ES5。 有关详细信息,请参阅使用ES6入门 – 使用 Traceur和Babel 将 ES6转为ES5。
.Net客户端标准:.NET 客户端可在 ASP.NET Core 支持的任何平台上运行(Xamarin.Android版本>8.4.0.1;Xamarin.iOS版本>11.14.0.4)。
Java 客户端标准:支持 Java 8 及更高版本。
二、示例:
官方示例地址:SignalR-samples
1、JavaScript使用SignalR教程
教程见:ASP.NET Core SignalR 入门
代码地址:
2、TypeScript使用SignalR教程
教程见:使用 TypeScript 和 Webpack 开始使用 ASP.NET Core SignalR
3、Blazor使用SignalR教程
教程见:结合使用 ASP.NET Core SignalR 和 Blazor
4、WebAPI+Vue使用SignalR教程
代码地址:
Program.cs
using Microsoft.AspNetCore.SignalR;
...
//注入SignalR实时通讯,默认用json传输
builuer.Services.AddSignalR(options =>
{
//客户端发保持连接请求到服务端最长间隔,默认30秒,改成4分钟,网页需跟着设置connection.keepAliveIntervalInMilliseconds = 12e4;即2分钟
//options.ClientTimeoutInterval = TimeSpan.FromMinutes(4);
//服务端发保持连接请求到客户端间隔,默认15秒,改成2分钟,网页需跟着设置connection.serverTimeoutInMilliseconds = 24e4;即4分钟
//options.KeepAliveInterval = TimeSpan.FromMinutes(2);
});
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<MessageHub>("/msgHub"); //设置socket连接
});
5、.Net客户端使用教程SignalR-WinForm/MAUI
代码地址:
Install-Package Microsoft.AspNetCore.SignalR.Client