SignalR 是 ASP.NET 团队正在开发的一个 Microsoft .NET Framework 库和 jQuery 插件,可能包括在以后版本的 ASP.NET 平台中。 它提供了一些前景极为光明的功能,而这些功能正是 .NET Framework 当前不曾具有的,并且是越来越多的开发者所需要的。
SignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话。 换句话说,该对话可不受限制地进行单个无状态请求/响应数据交换;它将继续,直到明确关闭。 对话通过永久连接进行,允许客户端向服务器发送多个消息,并允许服务器做出相应答复,值得注意的是,还允许服务器向客户端发送异步消息。是一个完全基于客户及服务器端解决方案,它是以JS作为客户端和ASP.NET作为服务端来创建这类的应用。
安装SignalR
创建MVC5 Web应用程序
工具——>库程序包管理器——>程序包管理器控制台
安装 SignalR程序包
Install-Package Microsoft.AspNet.SignalR安装Microsoft.Owin.Cors
Install-Package Microsoft.Owin.Cors
一丶Hub(中心模型OR集线器模型)(大神之作one/two)
<1>代理模式
1.js申明<script src="/signalr/js"></script>自动生成
//代理服务器通信 var connection = $.connection.hub; var proxy = $.connection.testHub;
2.调用方法
①. 声明客户端方法: proxy.client.xxx = function (x1, x2) {} // xxx代表客户端方法名称
②. 调用服务器端方法: proxy.server.xxx(x1,x2); //xxx代表服务器端方法名称
<2>非代理模式
1.不需要引入 <script src="/signalr/js"></script>
[HubName("test")] public class TestHub : Hub { }
public class Startup { public void Configuration(IAppBuilder app) { //默认前端代理-----默认映射路径"/signalr" //app.MapSignalR(); app.MapSignalR("/test", new HubConfiguration());//自己设定访问路径,同时设置Hub配置项,无需指定启动的Hub类,因为它们被自动识别 } }
//非代理进行与服务器通信 var conn= $.hubConnection("/test");//根据设置好的映射路径创建连接 var proxy = connection.createHubProxy("test");//根据连接创建我们需要访问的hub代理。test这里是之前创建好的Testhub类
2.常用方法
①. 声明客户端方法: proxy.on("方法名",function(x1,x2,x3){}); //接收服务器段信息
②. 调用服务器端方法: proxy.invoke("方法名", "参数1","参数2","参数3"); //调用服务器端方法