ABP module-zero +AdminLTE+Bootstrap Table+jQuery权限管理系统第十六节--SignalR与ABP框架Abp.Web.SignalR及扩展

ABP+AdminLTE+Bootstrap Table权限管理系统一期
Github:https://github.com/Jimmey-Jiang/ABP-ASP.NET-Boilerplate-Project-CMS
返回总目录:ABP+AdminLTE+Bootstrap Table权限管理系统一期

SignalR简介

SignalR是什么?

ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程。实时 Web 功能是指这样一种功能:当所连接的客户端变得可用时服务器代码可以立即向其推送内容,而不是让服务器等待客户端请求新的数据。

ASP.NET SignalR是ASP.NET开发人员的一个新库,可以使开发实时Web功能变得简单。SignalR允许服务器和客户端之间的双向通信。服务器现在可以将内容即时推送到连接的客户端。SignalR包含用于连接管理(例如连接和断开事件),连接分组和授权的API。一般情况下,SignalR会使用JavaScript(Ajax长时间轮询)的长轮询(long polling)的方式来实现客户端和服务器通信,随着Html5中WebSockets出现,SignalR也支持WebSockets通信和支持CORS(跨源资源共享)。另外SignalR开发的程序不仅仅限制于宿主在IIS中,也可以宿主在任何应用程序,包括控制台,客户端程序和Windows服务等,另外还支持Mono,这意味着它可以实现跨平台部署在Linux环境下。JSONP没有配置,并且连接不是跨域的,如果客户端和服务器都支持,则使用WebSocket。

SignalR内部有两类对象:
Http持久连接(Persisten Connection)对象:

Connection表示用于发送单收件人,分组或广播消息的简单终端。持久连接API(由PersistentConnection类的.NET代码表示)为开发人员提供了对SignalR公开的低级通信协议的直接访问。用来解决长时间连接的功能。还可以由客户端主动向服务器要求数据,而服务器端不需要实现太多细节,只需要处理PersistentConnection 内所提供的五个事件:OnConnected, OnReconnected, OnReceived, OnError 和 OnDisconnect 即可。

Hub(集线器)对象:基于连接API构建的更高级别的管道,允许您的客户端和服务器直接调用彼此的方法。SignalR像魔术一样处理跨机器边界的调度,允许客户端像本地方法一样方便地调用服务器上的方法,反之亦然。对于使用远程调用API(如.NET Remoting)的开发人员来说,使用Hubs通信模型将会很熟悉。使用集线器还允许您将强类型参数传递给方法,从而启用模型绑定。

SignalR将整个信息的交换封装起来,客户端和服务器都是使用JSON来沟通的,在服务端声明的所有Hub信息,都会生成JavaScript输出到客户端,.NET则依赖Proxy来生成代理对象,而Proxy的内部则是将JSON转换成对象。

参考

官网及学习文档:https://www.asp.net/signalr
github:https://github.com/SignalR
SignalR 参考项目:https://github.com/SignalR/Samples

实战

工具要求:

Visual Studio 2013 及以上

.NET 4.5及以上

MVC 5及以上

SignalR版本2及以上

使用Visual Studio 2013,创建一个MVC项目

通过Nuget安装SignalR包。
install-package Microsoft.AspNet.SignalR

安装SignalR成功后,SignalR库的脚本将被添加进Scripts文件夹下。具体如下图所示:

在解决方案资源管理器中,右键单击该项目(也可以新建一个类库),选择添加 新建文件夹,并添加一个名为Hubs的新文件夹。
用鼠标右键单击该Hubs文件夹,新建一个SignalR Hub Class(v2)类,并创建一个名为Chat .cs。您将使用此类作为将消息发送到所有客户端的SignalR服务器中心。

#7c3a861b02de2faef7aa2fca36d331cc#

用下面的代码替换Chat 类中的代码。

public class Chat : Hub { public void Send(string message) { Clients.All.send(message); } }

创建一个Startup类,如果开始创建MVC项目的时候没有更改身份验证的话,这个类会默认添加的,如果已有就不需要重复添加了。按照如下代码更新Startup类。

using Owin; using Microsoft.Owin; [assembly: OwinStartup(typeof(SignalRChat.Startup))] namespace SignalRChat { public class Startup { public void Configuration(IAppBuilder app) { // Any connection or hub wire up and configuration should go here app.MapSignalR(); } } }

编辑HomeController在Controllers / HomeController.cs中找到的类,并将以下方法添加到类中。此方法返回您将在稍后的步骤中创建的聊天视图。
```
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwpyx.html