ASP.NET Core SignalR 简介

什么是 SignalR?

ASP.NET Core 是一个开源库,可简化向应用添加实时 SignalR Web 功能。 实时 Web 功能使服务器端代码能够立即将内容推送到客户端。

适合的候选项 SignalR :

  • 需要从服务器进行高频率更新的应用。 示例包括游戏、社交网络、投票、拍卖、地图和 GPS 应用。
  • 仪表板和监视应用。 示例包括公司仪表板、即时销售更新或旅行警报。
  • 协作应用。 协作应用的示例包括白板应用和团队会议软件。
  • 需要通知的应用。 社交网络、电子邮件、聊天、游戏、旅行警报和很多其他应用都需使用通知。

SignalR提供一个 API,用于通过RPC (服务器到客户端的远程) 。 RPC 从服务器端 .NET Core 代码调用客户端上的 JavaScript 函数。

下面是适用于 ASP.NET SignalR Core 的一些功能:

  • 自动处理连接管理。
  • 同时将消息发送到所有连接的客户端。 例如,聊天室。
  • 将消息发送到特定客户端或客户端组。
  • 缩放以处理不断增加的流量。

源托管在 SignalR GitHub 上的存储库中

传输

SignalR 支持以下技术来处理实时通信 (正常回退) :

SignalR 自动选择服务器和客户端功能范围内的最佳传输方法。

中心

SignalR 使用 中心 在客户端和服务器之间通信。

中心是一个高级管道,允许客户端和服务器相互调用方法。 SignalR 自动处理跨计算机边界的调度,允许客户端在服务器上调用方法,反之亦然。 可以将强类型参数传递给方法,从而启用模型绑定。 SignalR 提供了两个内置的集线器协议:基于 JSON 的文本协议和基于 MessagePack的二进制协议。 与 JSON 相比,MessagePack 通常会创建较小的消息。 较早的浏览器必须支持 XHR 级别 2 ,才能提供 MessagePack 协议支持。

中心通过发送包含客户端方法的名称和参数的消息来调用客户端代码。 作为方法参数发送的对象将使用配置的协议进行反序列化。 客户端尝试将名称与客户端代码中的方法匹配。 当客户端找到匹配项时,它将调用方法并向其传递反序列化的参数数据。

其他资源