什么是 SignalR?
ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能。 实时 web 功能使服务器端代码可以立即将内容推送到客户端。
适用于 SignalR :
- 需要从服务器进行高频率更新的应用。 示例包括游戏、社交网络、投票、拍卖、地图和 GPS 应用。
- 仪表板和监视应用。 示例包括公司仪表板、即时销售更新或旅行警报。
- 协作应用。 协作应用的示例包括白板应用和团队会议软件。
- 需要通知的应用。 社交网络、电子邮件、聊天、游戏、旅行警报和很多其他应用都需使用通知。
SignalR提供一个 API,用于创建 (RPC) 的服务器到客户端远程过程调用。 Rpc 通过服务器端 .NET Core 代码从客户端调用 JavaScript 函数。
下面是的某些功能 SignalR ASP.NET Core:
- 自动处理连接管理。
- 将消息同时发送到所有连接的客户端。 例如,聊天室。
- 向特定客户端或客户端组发送消息。
- 可缩放以处理不断增加的流量。
源托管在 SignalR GitHub 上的存储库中。
传输
SignalR支持以下用于按正常回退) (处理实时通信的技术:
- WebSockets
- 服务器发送的事件
- 长轮询
SignalR自动选择服务器和客户端功能内的最佳传输方法。
集线器
SignalR使用集线器在客户端和服务器之间进行通信。
中心是一种高级管道,它允许客户端和服务器分别调用方法。 SignalR自动处理跨计算机边界的调度,使客户端能够在服务器上调用方法,反之亦然。 可以将强类型参数传递给方法,从而启用模型绑定。 SignalR提供了两个内置的集线器协议:基于 JSON 的文本协议和基于MessagePack的二进制协议。 与 JSON 相比,MessagePack 通常会创建较小的消息。 较早的浏览器必须支持XHR 级别 2 ,才能提供 MessagePack 协议支持。
中心通过发送包含客户端方法的名称和参数的消息来调用客户端代码。 作为方法参数发送的对象将使用配置的协议进行反序列化。 客户端尝试将名称与客户端代码中的方法匹配。 当客户端找到匹配项时,它将调用方法并向其传递反序列化的参数数据。
其他资源
- SignalRASP.NET Core 入门
- 支持的平台
- 集线器
- JavaScript 客户端
https://github.com/dotnet/AspNetCore/tree/master/src/SignalR