利用SignalR实现实时推送信息功能

一段时间没写简书了,感谢这段时间以来不断收到大家的支持和喜欢,让我感觉到自己写的一些东西还是能为大家提供一些小小的帮助的,是你们给了我动力继续写文章和教程,在此表示再次的感谢。下面将给大家分享的是有关于SignalR的技术的一种应用。

一、什么是SignalR?
SignalR 是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信。
什么是实时通讯?
就是当所连接的客户端变得可用时服务器代码可以立即向其推送内容,而不是让服务器等待客户端请求新的数据。当WebSockets可用时(即浏览器支持Html5,SignalR使用WebSockets,当不支持时SignalR将使用其它技术来保证达到相同效果。

二、主要用途:
它出现的主要目的是实现服务器主动推送(Push)消息到客户端页面,这样客户端就不必重新发送请求或使用轮询技术来获取消息。
可以用在聊天室、看板、单点通讯、多点通讯,甚至可以结合其他技术用来做视频聊天。当然也有其他用途。

三、实现机制:
SignalR 的实现机制与 .NET WCF是相似的,都是使用远程代理来实现。在具体使用上,有两种不同目的的接口:PersistentConnection 和 Hubs,其中 PersistentConnection 是实现了长时间的 JavaScript 轮询(类似于 Comet),Hub 是用来解决实时信息交换问题,它是利用 Javascript 动态载入执行方法实现的。SignalR 将整个连接,信息交换过程封装得非常漂亮,客户端与服务器端全部使用 JSON 来交换数据。

四、基本流程图:

Paste_Image.png

五、示例:
以下教程我会就 Hubs 接口的使用来做一个实时看板:
示例环境:.NET Framework4.5及以上(必须要) WIN10,Visual Stadio 2017 ,SQL2014.

1、新建项目,打开NuGet包管理器,安装SignalR.最新版本,我这里的版本是V2.2.1.
如图:


Paste_Image.png

2、 在App_Start目录中,创建一个类,类名为Startup:


Paste_Image.png

3、 在Startup.cs中注册管道:


Paste_Image.png

4、设置webconfig。建立一个类DB:目的是获取webconfig文件中的数据库连接字符串:


Paste_Image.png
Paste_Image.png

5、 我们需要在Global.asax.cs的Application_Start和Application_End方法中添加以下内容:


Paste_Image.png

此处的sqlDependency作用:
当被监测的数据库中的数据发生变化时,SqlDependency会自动触发OnChange事件来通知应用程序,从而达到让系统自动更新数据(或缓存)的目的。详情看第8步。

6、建个Model,TableA。这里就只有X,Y,Z三个字段:


Paste_Image.png

再到数据库中建立相对于的数据库和表。
注意:建完表后记得启动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类了:


Paste_Image.png

记得使用小驼峰命名,不然客户端调用不了。

8、实现去数据库获取数据,当数据库的数据变化时,客户端也能实时显示:


Paste_Image.png
Paste_Image.png

其中以下代码是根据数据库检测到的变化的内容触发OnChange事件。
SqlDependency dependency = new SqlDependency(sqlCommand);
dependency.OnChange += new OnChangeEventHandler(dependency_Onchange);

9、建一个控制器:两个Action操作


Paste_Image.png

10、视图:


Paste_Image.png
Paste_Image.png
Paste_Image.png

到了,到此为止本教程基本结束了,下面将会是本教程的实际效果。

这是数据库中这张表的数据


Paste_Image.png

现在把第二行第二列的5修改为9。


Paste_Image.png

由此可见所有连接的客户端的值也跟着改变了,这样实时推送的功能也就实现了。
好了,关于SignalR的相关内容就介绍那么多了,更多SignalR的技术内容大家也可以自行挖掘一下。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,594评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,424评论 25 707
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,016评论 4 62
  • 1 我们每个人都活在面具...
    董禹阗阅读 455评论 0 3
  • 在老刘家阳台沙发窝了一个下午,一直觉得老刘是个有思想但没生活的人,看看今天他的小屋,客厅里没有电视沙发,简单的书架...
    冷暖自知芃芃阅读 235评论 0 0