什么是 SignalR 以及如何使用它?
在典型的 Web 应用程序中,通信流程是单向的,即从客户端到服务器。客户端向服务器发起请求,服务器执行某些任务,并将响应发送回客户端。
SignalR 是一个开源项目,它允许服务器与客户端之间进行实时、双向的 Web 通信。使用 SignalR,您可以编写能够立即与客户端通信的服务器端代码。
SignalR 简化了向 Web 应用程序添加实时 Web 功能的过程,服务器代码可以在可用时立即将内容推送到连接的客户端。这使客户端无需反复轮询服务器,并且服务器无需等待客户端请求新数据。
SignalR 提供了一个 API,用于创建服务器到客户端的远程过程调用 (RPC),这些调用从服务器端 .NET 代码调用客户端浏览器(和其他客户端平台)中的 JavaScript 代码。SignalR 还包括一个用于连接管理(例如,连接和断开连接事件)和分组连接的 API。
SignalR 可用于向您的 ASP.NET 应用程序添加任何类型的“实时”Web 功能。任何时候用户刷新网页以查看新数据,或者页面实现长轮询以检索新数据,都是使用 SignalR 的候选者。
SignalR 提供一个应用程序编程接口 (API),您可以使用它来创建服务器到客户端的远程过程调用 (RPC)。这些 RPC 允许服务器端 C# 代码调用客户端上的 JavaScript 函数。
SignalR 使用多种技术
SignalR 使用多种技术来处理服务器到客户端的实时通信,例如:
WebSockets
服务器发送事件 (Server-Sent Events)
长轮询 (Long Polling)
它会根据服务器和客户端的功能自动选择最佳传输方法。
SignalR 的应用
虽然聊天是 SignalR 的常用示例,但您可以做的远不止这些。以下是 SignalR 的一些优秀应用。
用户通知
向客户端发送高频更新
包含实时图表和图形的仪表板
协作应用程序,例如聊天和消息服务
游戏和娱乐应用程序
警报机制