SignalR 解析:Persistent Connections

SignalR 解析:Persistent Connections

今天我们对SingarlR的PersistentConnections的使用进行讨论,包括,客户端和服务器如何连接,如何处理消息等等,主要分为以下几个部分:

•  利用SignalR开始建立一个web应用程序

•  与服务器建立PersistentConnections

•  在.net客户端使用PersistentConnections

•  在浏览器使用PersistentConnections

•  在Windows Server 2012中启用WebSockets 

我们需要两种类型的客户端,即.Net 与 浏览器两种客户端,保持与服务器之间的连接。

Demo 说明

我们会交叉提供不同的类型的客户端demo,几种类型的客户端都在一台服务器环境下工作

1、基于web的聊天Demo

2、基于.Net的控制台程序

3、基于Windows 8WinRT 风格的客户端

如果没有Web Server,我们还提供一个宿主程序,使你的应用支持SinglR功能

The persistent connection,即长连接

SignalR使用长连接,在服务器与客户端直接传递数据,接下来看我们的demo,使用Visual Studio 2012开发

 

1.      开始创建一个新项目

图1

[图1]

2.      选择Web|Asp.Net Empty web Application,命名为SignalRChat

图2


3.      从NuGet添加引用,在SignalRChat项目中右键单击引用

图3


4.      在NuGet管理窗口中选在“在线”,搜索“Microsoft.AspNet.SignalR”,点击安装

图4



5.      现在我们已经有了一个基本的程序,现在需要注册一个路由,添加一个全局应用程序类:(Global.asax)

图5



6.      去掉其他方法,这里只用到了Application_Start 方法

7.      也不需要多余的命名空间,保留System, System.Web、System.Web.Routing、Microsoft.AspNet.SignalR.

8.      路由方法配置如下:例如http://站点:端口/chat 来配置你的ChatConnection类

图6

[图6]


9.      添加长连接类:ChatConnection.cs

图7

[图7]

10.   ChatConnection继承了PersistentConnetion类,这里暂时不做处理

图8

[图8]

11.   服务端代码告一段落,我们来添加客户端代码,添加一个Page页面,名字为index.html,添加Javascript来连接到服务器,并且开始聊天

图9

[图9]

12.   加入对js的引用,可以把文件直接拖过来

13.   添加Jquery,需要jquery1.6以上的版本

<scriptsrc="Scripts/jquery-1.8.3.js"></script>

14.   添加Jquery.signalR

<scriptsrc="Scripts/jquery.signalR-1.0.1.js"></script>

15.   加入以下代码:

图10

[图10]

16.   加入用户输入界面

图11

[图11]


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SignalRASP.NET 团队正在开发的一个 Microsoft .NET Framework 库和 jQuery 插件,可能包括在以后版本的 ASP.NET 平台中。 它提供了一些前景极为光明的功能,而这些功能正是 .NET Framework 当前不曾具有的,并且是越来越多的开发者所需要的。 SignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话。 换句话说,该对话可不受限制地进行单个无状态请求/响应数据交换;它将继续,直到明确关闭。 对话通过永久连接进行,允许客户端向服务器发送多个消息,并允许服务器做出相应答复,值得注意的是,还允许服务器向客户端发送异步消息。它和AJax类似,都是基于现有的技术。本身是一个复合体。一般情况下,SignalR会使用Javascript的长轮询( long polling),实现客户端和服务端通信。在WebSockets出现以后,SignalR也支持WebSockets通信。当然SignalR也使用了服务端的任务并行处理技术以提高服务器的扩展性。 任何一个技术的出现都是为了解决特定的问题。SignalR也不例外。我们知道网站开发中最长见到的一个功能就是在线聊天室。现在的网上的大部分在线聊天室都是基于2种技术,1.AJAX 2.Flash. 聊天室要解决最大的问题就是 消息的推送。当N个在线用户 同时加入一个聊天室时,1个用户发送消息,服务端就要把这个消息转发给特定的人。 之前的技术都是通过Javascript来不停地发送请求来轮训 服务端的新的消息。这种定期发送Ajax请求给服务器的方式,在用户很大的情况下给服务器带来很大的压力。 WebSockets这个技术的出现,很好地解决了这个问题,恰恰支持可以主动推送消息,SignalR 支持WebSockets。我们可以看到未来网络应用中会大量出现自己吃WebSockets的程序,而SignalR应该也会广泛在ASP.NET 网站中出现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值