ASP.NET MVC + SignalR实现简单聊天室

ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程。实时 Web 功能是指这样一种功能:当所连接的客户端变得可用时服务器代码可以立即向其推送内容,而不是让服务器等待客户端请求新的数据。SignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话。 换句话说,该对话可不受限制地进行单个无状态请求/响应数据交换;它将继续,直到明确关闭。 对话通过永久连接进行,允许客户端向服务器发送多个消息,并允许服务器做出相应答复,值得注意的是,还允许服务器向客户端发送异步消息。

SignalR演示图

SignalR演示图

SignalR官网介绍:http://www.asp.net/signalr

本项目实际效果示例:http://signalrchats.azurewebsites.net/

接下来会通过上面的项目依次讲解。

首先创建一个ASP.NET MVC空项目SignalRDemo,使用Nuget工具引入SignalR的包。文中页面用到bootstrap所以引用相应的包,没用到的无需引用。

在项目中新建一个Hubs文件夹用来放Hub集线器,在Hubs文件夹中新建一个SignalR集线器。命名MyHub如图

20160130211659

一下为MyHub中的主要代码:

20160130212534

然后在项目中添加Startup类,命名为Startup,加入代码

//注册所有signal集线器
app.MapSignalR();

20160130212905

注意,startup类一定要命名为Startup,一定要加入集线器注册代码,不然无法使用

添加HomeController,在Index页面输入一下代码:

首先引入必要文件

20160130213433

注意,红框标记出的 <script src=”~/signalr/hubs”></script>固定格式插入,因为注册的hub集线器会在项目中添加一个js文件,在浏览器中输入yourdomain/signalr/hubs即可看到(yourdomain为你的域名)。

20160130213922

主要js代码:

20160130214136

注意,一定要有connection.hub.start()方法用来启动集线器

 

具体运行效果在http://signalrchats.azurewebsites.net/

同一台电脑可开不同浏览器尝试,移动设备也能访问

posted @ 2016-02-29 16:35  李琼羽  阅读(2165)  评论(0编辑  收藏  举报