ASP.NET MVC + SignalR实现简单聊天室
ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程。实时 Web 功能是指这样一种功能:当所连接的客户端变得可用时服务器代码可以立即向其推送内容,而不是让服务器等待客户端请求新的数据。SignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话。 换句话说,该对话可不受限制地进行单个无状态请求/响应数据交换;它将继续,直到明确关闭。 对话通过永久连接进行,允许客户端向服务器发送多个消息,并允许服务器做出相应答复,值得注意的是,还允许服务器向客户端发送异步消息。
SignalR官网介绍:http://www.asp.net/signalr
本项目实际效果示例:http://signalrchats.azurewebsites.net/
接下来会通过上面的项目依次讲解。
首先创建一个ASP.NET MVC空项目SignalRDemo,使用Nuget工具引入SignalR的包。文中页面用到bootstrap所以引用相应的包,没用到的无需引用。
在项目中新建一个Hubs文件夹用来放Hub集线器,在Hubs文件夹中新建一个SignalR集线器。命名MyHub如图
一下为MyHub中的主要代码:
然后在项目中添加Startup类,命名为Startup,加入代码
//注册所有signal集线器
app.MapSignalR();
注意,startup类一定要命名为Startup,一定要加入集线器注册代码,不然无法使用
添加HomeController,在Index页面输入一下代码:
首先引入必要文件
注意,红框标记出的 <script src=”~/signalr/hubs”></script>固定格式插入,因为注册的hub集线器会在项目中添加一个js文件,在浏览器中输入yourdomain/signalr/hubs即可看到(yourdomain为你的域名)。
主要js代码:
注意,一定要有connection.hub.start()方法用来启动集线器
具体运行效果在http://signalrchats.azurewebsites.net/
同一台电脑可开不同浏览器尝试,移动设备也能访问