开源框架SignalR
一、SignalR优缺点
SignalR是一个开源框架,它用于构建实时Web应用程序。使用SignalR,您可以在服务器端和客户端之间创建双向通信,使您的应用程序可以实时更新。
1.优点
- 实时性:SignalR支持实时通信,可以在服务器和客户端之间建立双向通信。
- 易于使用:SignalR提供了强大且易于使用的API,使开发人员可以轻松构建实时应用程序。
- 可扩展性:SignalR允许将应用程序扩展到多个服务器,使其可以承载大量并发用户。
- 跨平台:SignalR支持多种平台,包括ASP.NET、ASP.NET Core、Java、Node.js和Python。
2.缺点
- 对浏览器的兼容性支持不够广泛,有些较老的浏览器不支持WebSocket协议。
- 双向通信的实现需要经过一定的学习和开发时间
二、安装部署及应用
1.安装
安装 SignalR 可以使用 NuGet 包管理器从 Visual Studio 中进行安装。您可以使用以下命令将 SignalR 添加到您的项目中
Install-Package Microsoft.AspNet.SignalR
2.应用示例
(1)创建 SignalR Hub 类
using Microsoft.AspNet.SignalR;
using System.Threading.Tasks;
public class ChatHub : Hub
{
public void Send(string name, string message)
{
// Call the addNewMessageToPage method to update clients.
Clients.All.addNewMessageToPage(name, message);
}
}
(2)引入 SignalR 客户端脚本
<!--引入 SignalR 客户端脚本-->
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/signalr.js/2.4.1/signalr.js"></script>
(3)接收服务器消息并更新页面
<!--使用 SignalR 脚本连接服务器-->
<script>
$(function () {
var chat = $.connection.chatHub;
// 定义一个方法用于更新页面
chat.client.addNewMessageToPage = function (name, message) {
// 更新页面中的消息
$('#chatMessage').append('<li><strong>' + name + '</strong>: ' + message + '</li>');
};
// 启动 SignalR 连接
$.connection.hub.start().done(function () {
// 绑定“发送”按钮的点击事件
$('#sendMessage').click(function () {
// 调用服务器端的 Send 方法
chat.server.send($('#name').val(), $('#message').val());
// 清空消息文本框中的内容
$('#message').val('').focus();
});
});
});
</script>
(4)在 Global.asax.cs 文件中添加 SignalR 配置
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using Microsoft.AspNet.SignalR;
namespace SignalRChat
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
// 配置 SignalR
RouteTable.Routes.MapHubs();
}
}
}