2019独角兽企业重金招聘Python工程师标准>>>

sirnal下有两种使用。

一种是 Persistent Connection ,另外一种是Hubs 。详细请看 https://github.com/SignalR/SignalR/wiki ;

hubs支持浏览器与客户端互相调用方法。所以应用更广泛。

在前台页面上写上如下脚本:

//初始化signalrfunction initSignalr(parameters) {var chat = $.connection.chat;//这里的chat为服务器上的继承了HUB的类的HubName。chat.client.addMessage = function(msg) {$('#submit').trigger('click');$('#submit2').trigger('click');};$.connection.hub.start().done(function() {});}

上面给client写了一个addmessage方法。之后,服务器将调用它

下面这条语句执行的方法是空的,但是必须要有

$.connection.hub.start().done(function() {});

在页面加载完毕后会通过此方法向浏览器发送请求。function里可以写一些绑定事件,如:当点击按钮后,

调用了服务器的send方法。send必须是服务器上有的

$.connection.hub.start().done(function() {$("#broadcast").click(function () {// Call the chat method on the serverchat.server.send($('#msg').val());});});

然后在document ready方法中注册此方法:

$(function () {initDateSelect();initTableSelect();resetTableTile();initSignalr();})

需要在页面中引入jquery.js,signalr.js以及hubs.js,在mvc中,hub.js可以通过请求服务器获得,

<script src="~/Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="~/Scripts/jquery.signalR-1.0.1.min.js" type="text/javascript"></script>
<script src="~/signalr/hubs" type="text/javascript"></script>

服务器在global.asax中注册映射:  

RouteTable.Routes.MapHubs();

编写类继承自hub: 服务器中 实现了上面的send

namespace CYINC.MOMain.Plugin.LiveCharts.Connection
{[HubName("chat")]public class DJ_Connection : Hub{public void Send(string message){Clients.All.addMessage(message);}}
}

注意,这里的DJ_Connection继承了Hub,并且它有一个特性HubName:chat, 还记得页面中这个么:

var chat = $.connection.chat;//这里的chat为服务器上的继承了HUB的类的HubName。

chat是你需要建立hub连接的class的HubName的值。

在controller中,新建action对上面的类调用: addMessage为客户端的脚本中的方法,所以脚本中,此方法也必须有实现。

//通过web请求向客户端发送消息public ActionResult Send(){var context = GlobalHost.ConnectionManager.GetHubContext<DJ_Connection>();context.Clients.All.addMessage("Admin");//这里的admin是随便写的,因为客户端并不需要接收此消息,仅仅是收到消息ajax重新请求数据return null;}

不能够直接访问Hub的对象。必须要这样才行:

var context = GlobalHost.ConnectionManager.GetHubContext<DJ_Connection>();

这样就能通过给发送http请求,来触发send方法,send方法通过hub调用客户端(浏览器)的addMessage方法。来控制所有客户端做一些事情。比如一起更新数据等。

====================================================================

sql server的表触发器可以这样写:(首先开启数据库的clr支持)

--开启数据库CLR 支持
exec sp_configure 'clr enabled', 1;
--开始数据的验证
alter database MOMain set TRUSTWORTHY on;--相应数据库
RECONFIGURE

数据库clr集成的dll这样写,当数据库触发CallWeb方法时,发送上面的send请求给服务器:

namespace SqlDependency
{public class Program{/// <summary>/// 给指定的URL发送请求,服务器收到请求将通知客户端拉数据,此dll将集成到数据库的触发器/// </summary>/// <param name="url"></param>/// <returns></returns>[SqlFunction(IsDeterministic = true, DataAccess = DataAccessKind.Read)]public static String CallWeb(String url){WebRequest req = WebRequest.Create(url);var rep = req.GetResponse();return "1";}}
}

编译后,将此dll集成到数据库:

use MOMain;--数据库名
create assembly SqlDependency FROM 'D:\SqlDependency.dll'--程序集名称和地址
WITH PERMISSION_SET = UNSAFE
GO--方法名写正确,为程序集中的方法名,注意参数个数
create function CallWeb(@FileFullName as nvarchar(max))
returns nvarchar(max)
with returns null on null input
external name [SqlDependency].[SqlDependency.Program].[CallWeb]
GO--编写触发器,传递参数以及
CREATE TRIGGER [dbo].[UserTableChangedEvent] on [dbo].[dj_chanchu_10min]  --表名称FOR INSERT, DELETE, UPDATE  --当有增删改时,触发器将被触发AS  BEGIN  DECLARE @URL AS VARCHAR(150)  SET @URL = 'http://localhost/djcharts/send';  --服务器接收请求的urlSelect dbo.WriteStringToFile(@URL)                   END  GO

这样,当表数据有变化时。会发送http请求给服务器,服务器通知所有的浏览器重新拉一次数据。做到了实时更新,实时监控。

转载于:https://my.oschina.net/u/867090/blog/123474

mvc 下的 signalR使用小结相关推荐

  1. MVC中使用signalR入门教程

    一.前言:每次写总要说一点最近的感想 进入工作快半年了,昨天是最郁闷的一天,我怀疑我是不是得了"星期一综合征",每个星期一很没有状态.全身都有点酸痛,这个可能一个星期只有周末才打一 ...

  2. jquery ajax下拉联动,jQuery Ajax MVC 下拉框联动

    无刷新下拉框联动方法: Controllers代码 public JsonResult DH_Change(string DH_ID) { List TeamLeaderList = FinanceD ...

  3. ASP.NET MVC下的异步Action的定义和执行原理

    Visual Studio提供的Controller创建向导默认为我们创建一个继承自抽象类Controller的Controller类型,这样的Controller只能定义同步Action方法.如果我 ...

  4. ASP.NET MVC下的四种验证编程方式[续篇]

    ASP.NET MVC下的四种验证编程方式[续篇] 原文:ASP.NET MVC下的四种验证编程方式[续篇] 在<ASP.NET MVC下的四种验证编程方式>一文中我们介绍了ASP.NET ...

  5. ASP.NET MVC下使用AngularJs语言(一):Hello your name

    新春节后,分享第一个教程. 是教一位新朋友全新学习ASP.NET MVC下使用AngularJs语言. 一,新建一个空的Web项目.使用NuGet下载AngularJs和jQuery. 二,配置Bun ...

  6. ASP.NET MVC下基于异常处理的完整解决方案

    ASP.NET MVC下基于异常处理的完整解决方案 参考文章: (1)ASP.NET MVC下基于异常处理的完整解决方案 (2)https://www.cnblogs.com/artech/archi ...

  7. Response.End()在Webform和ASP.NET MVC下的表现差异

    前几天在博问中看到一个问题--Response.End()后,是否停止执行?MVC与WebForm不一致.看到LZ的描述后,虽然奇怪于为何用Response.End()而不用return方式去控制流程 ...

  8. awd的批量脚本 pwn_CTF线下赛AWD套路小结

    CTF线下赛AWD套路小结 本文已在先知社区发表,欢迎访问,链接h 最近打了2场CTF线下赛,把AWD模式中的一些小套路做一些总结,本人web狗,二进制部分就不班门弄斧了. 一.AWD模式简介 AWD ...

  9. Linux下python脚本编写小结

    Linux下python脚本编写小结 1.如何在linux系统中,看是否安装了python: -which python 或者 which python3 如何在python脚本中使用shell命令: ...

最新文章

  1. python + ajax 实现拖动功能
  2. 【记录】解决uni-app 用nginx反向代理出现Invalid Host header问题
  3. php中三个数字由小到大输出,[求助][C语言求助]输入10个数字,并将这些数字由大到小排列...
  4. Spring Boot 异步请求和异步调用,一文搞定!
  5. Redis 特殊数据类型 :Geospatial、Hyperloglog、Bitmap
  6. Azkaban使用简单笔记
  7. 如何更好阅读源代码 .
  8. 机器学习焦点,范德比尔特(Vanderbilt U)的医疗机器人以及更多开源新闻
  9. java闭包lambda,(lambda)函数闭包捕获了什么?
  10. Java——File类,递归
  11. Mysql net start mysql启动,提示发生系统错误 5 拒绝訪问 解决之道
  12. GridView“GridView1”激发了未处理的事件“PageIndexChanging”
  13. ios备忘录下载安卓版_ios8备忘录app软件下载
  14. 数据库实验 实验三 数据查询
  15. martyr2s提出的计算机练手小项目(未翻译)
  16. layui模板引擎嵌套
  17. C#人民币金额大写转换
  18. 今天sql练习遇到的问题
  19. php 配置文件设置时区_PHP中设置时区方法
  20. 基于单片机的电流检测仿真设计(#0041)

热门文章

  1. docker基础文档(链接,下载,安装)
  2. 记住这35个英文单词,你就可以在RPA界混了!
  3. Nacos v0.7.0:对接CMDB,实现基于标签的服务发现能力
  4. java并发编程——并发容器类介绍
  5. [asp.net core]SignalR一个例子
  6. 大数据环境下该如何优雅地设计数据分层
  7. iOS,Android,WP, .NET通用AES加密算法
  8. ActionScript 3操作XML 详解
  9. Apache Traffic Server管理工具
  10. react前端开发_是的,React正在接管前端开发。 问题是为什么。