asp.net signalR 专题—— 第三篇 如何从外部线程访问 Persisten
? ? ? 在前面的两篇文章中,我们讲到的都是如何将消息从server推向client,又或者是client再推向server,貌似这样的逻辑没什么异常,但是放在真实 的环境中,你会很快发现有一个新需求,如何根据第三方系统的数据变化来即时的将新数据推送到各个客户端,比如下面这样: ok,原理就是上面的这张图,如果我们Server中的“监控程序”发现有更新,这个时候,监控程序需要将更新的数据送给server程序,然后由server程序 推送到各个客户端,那下面我们该怎么做到呢? ? 一:GlobalHost 属性 ? ? ?首先我们简单的看一下它的解释,叫做“提供对默认主机信息的访问”,可以看到,这是一个所谓的全局设置,里面的5个属性,个个都非常重要,因为 对他们的设置,影响的都是全局性的,好了,作为这篇我们关注的就是其中之一ConnectionManager属性,如下图: 它呢,就是获取你当前的Connection连接,好了,废话不多说,我们来做一个例子看一看。 ? 二:实例演示 1. 伪造“外部系统” ?在这里我就Fake一个单独页面(mytest.aspx),假装从外面获取到了"我是mytest.aspx"这条数据,如下: ? 在上图中,你也看到了GetConnectionContext方法是接受一个泛型的参数,而这个“泛型参数”,就是你的PersistentConnection实现类,这里也就 是MyConnection1,当然这里不光可以访问Persistent,还可以访问Hub类,这个我们放到后续和大家讲解。 ? 2. 开启两个客户端 ? 开启这两个就是为了连接到我们的server,假装多用户,也就是PersistentConnection类,如下: <!DOCTYPE html> <htmlhead> meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> title></charset="utf-8" /> </bodyscript src="/scripts/jquery-1.10.2.js"script="/scripts/jquery.signalR-2.1.2.js"<!--<script src="/signalr/js"></script>--> ="scripts/myjs.js"type="text/javascript"> var conn = $.connection("/myconnection); conn.start().done(function (data) { console.log(data.id); }); conn.received( (data) { console.log(data); }); > public class MyConnection1 : PersistentConnection { protected override Task OnConnected(IRequest request,string connectionId) { Debug.WriteLine("OnConnected"); return Connection.Send(connectionId,Welcome!); } override Task OnReceived(IRequest request,1)">string connectionId,1)"> data) { Debug.WriteLine(data); return Connection.Send(connectionId,data); } override Task OnDisconnected(IRequest request,1)">bool stopCalled) { Debug.WriteLine(OnDisconnectedreturn base.OnDisconnected(request,connectionId,stopCalled); } override Task OnReconnected(IRequest request,1)">OnReconnected.OnReconnected(request,connectionId); } } 现在两个client都开启了,然后各自都收到了server的欢迎信息,以及各自和server通信的标识。 ? 3. 访问mytest页面,模拟通知各个客户端,如下图: ? 好了,这个也是本篇课程所讲的主要东西,虽然不显眼,但是在真实环境中对您确实非常的有帮助~~~ ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – EF,ASP MVC依赖注入.多个并发请求和数据库连
- asp.net-mvc – ASP.Net MVC 2.0 Html.HiddenFor HtmlHelpe
- asp.net – 这些Web Essentials选项有什么作用?
- asp.net-mvc-3 – 在razor语句之间输出文字HTML会导致编译错
- asp.net-mvc – 传递子对象问题的嵌套部分视图
- 如何更改.Net页面将在其下运行的扩展名?
- Asp.Net Identity发现用户不在角色中
- asp.net – 如何使一个TextBox控件是多行不可调整大小?
- 如何在ASP.NET Core中组合基于模板和属性的路由?
- asp.net-mvc – 在Global.asax中注入依赖项
- asp.net-mvc – ASP.NET MVC:Uri到可用的路由数
- asp.net-mvc – 将Ninject与Ninject.Web.Api用于
- asp.net-web-api – 使用ASP.NET WebAPI消费Atla
- VS添加版权声明
- asp.net-mvc – 有没有办法让RoutePrefix以可选参
- ASP.NET MVC 3和NHibernate脚手架
- asp.net-mvc – 如何从Action属性返回一个Json对
- asp.net-mvc-3 – WebGrid列中的MVC3 Html.Begin
- asp.net – Repeater.Items上的DataItem始终为nu
- 使用ASP.NET SDK将文件上载到S3存储桶的文件夹