利用SignalR实现实时推送信息

利⽤SignalR实现实时推送信息
转⾃:何向宇
jianshu/p/f8a71c0d3eb0
前⾔
下⾯将给⼤家分享有关于SignalR的技术的⼀种应⽤。
⼀、什么是SignalR?
SignalR是⼀个ASP .NET下的类库,可以在ASP .NET的Web项⽬中实现实时通信。
什么是实时通讯?
就是当所连接的客户端变得可⽤时服务器代码可以⽴即向其推送内容,⽽不是让服务器等待客户端请求新的数据
当WebSockets可⽤时(即浏览器⽀持Html5,SignalR使⽤WebSockets,当不⽀持时SignalR将使⽤其它技术来保证达到相同效果。
⼆、主要⽤途
它出现的主要⽬的是实现服务器主动推送(Push)消息到客户端页⾯,这样客户端就不必重新发送请求或使⽤轮询技术来获取消息。
可以⽤在聊天室、看板、单点通讯、多点通讯,甚⾄可以结合其他技术⽤来做视频聊天。当然也有其他⽤途。
三、实现机制
SignalR 的实现机制与 .NET WCF是相似的,都是使⽤远程代理来实现。
在具体使⽤上,有两种不同⽬的的接⼝:PersistentConnection 和 Hubs,其中 PersistentConnection 是实现了长时间的 Java 轮询(类似于 Comet),Hub 是⽤来解决实时信息交换问题,它是利⽤ Java 动态载⼊执⾏⽅法实现的。SignalR 将整个连接,信息交换过程封装得⾮常漂亮,客户端与服务器端全部使⽤ JSON 来交换数据。折叠篮
四、基本流程图
五、⽰例
以下教程我会就 Hubs 接⼝的使⽤来做⼀个实时看板:
⽰例环境:
•.NET Framework 4.5及以上(必须要)
•Win10、 Visual Stadio 2017 、 SQL2 014
1、新建项⽬,打开NuGet包管理器,安装SignalR.最新版本,我这⾥的版本是V2.2.1.
如图:
2、在App_Start⽬录中,创建⼀个类,类名为Startup:
2、在App_Start⽬录中,创建⼀个类,类名为Startup:
3、在Startup.cs中注册管道:
4、设置webconfig。建⽴⼀个类DB:⽬的是获取webconfig⽂件中的数据库连接字符串:
红枣去核机5、我们需要在Global.asax.cs的Application_Start和Application_End⽅法中添加以下内容:
此处的sqlDependency作⽤:
当被监测的数据库中的数据发⽣变化时,SqlDependency会⾃动触发OnChange事件来通知应⽤程序,从⽽达到让系统⾃动更新数据(或缓存)的⽬的。详情看第8步。
油管吊卡6、建个Model,TableA。这⾥就只有X,Y,Z三个字段:
再到数据库中建⽴相对于的数据库和表。mirna靶基因分析
注意:建完表后记得启动SQL Server Service Broker。
启动SQL Server Service Broker 其中([SignalR]为数据库名)
ALTER DATABASE [SignalR] SET NEW_BROKER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [SignalR] SET ENABLE_BROKER;
7、在项⽬录中,创建⼀个SignalR⽬录,我们就可以在这个⽬录中添加Hub类了:
记得使⽤⼩驼峰命名,不然客户端调⽤不了。气路接头
8、实现去数据库获取数据,当数据库的数据变化时,客户端也能实时显⽰:
其中以下代码是根据数据库检测到的变化的内容触发OnChange事件。
SqlDependency dependency = newSqlDependency(sqlCommand);
dependency.OnChange += newOnChangeEventHandler(dependency_Onchange);
9、建⼀个控制器:两个Action操作
10、视图
到了,到此为⽌本教程基本结束了,下⾯将会是本教程的实际效果。
这是数据库中这张表的数据
现在把第⼆⾏第⼆列的5修改为9。
蝇蛆蛋白
由此可见所有连接的客户端的值也跟着改变了,这样实时推送的功能也就实现了。
关于SignalR的相关内容就介绍那么多了,更多SignalR的技术内容⼤家也可以⾃⾏挖掘⼀下。

本文发布于:2024-09-22 18:29:27,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/267014.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:客户端   数据库   技术   实现   数据   教程   信息   变化
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议