ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程。实时 Web 功能是指这样一种功能:当所连接的客户端变得可用时服务器代码可以立即向其推送内容,而不是让服务器等待客户端请求新的数据。

  官网:http://signalr.net/

  下载:install-package Microsoft.AspNet.SignalR

  

  本节将简单快速介绍

实现原理

  1. 如果浏览器<=Internet Explorer 8,用长轮询的方式
  2. 如果配置中指定了使用jsonp,则会使用长轮询的方式
  3. 如何需要创建跨域连接,将会如使用WebSocket,如果一下条件满足的话(否则用长轮询)
    1. 客户端支持WebSocket
    2. 服务端支持WebSocket
    3. 客户端支持Cross-Origin Resource Sharing

基于SignalR(SR)的实现原理,所以SR在客户端浏览器IE8以上基本都是完全兼容的。可以说完全支持jQuery 1.6.4的浏览器就能支持SignalR。

Hello World

创建空的Asp.Net项目

安装

  install-package Microsoft.AspNet.SignalR

  install-package bootstrap

添加一个集线器类

    public class ChatHub : Hub
{
public void Send(string name, string message)
{
// Call the broadcastMessage method to update clients.
Clients.All.broadcastMessage(name, message);
}
}

  

添加一个OWIN Startup类

[assembly: OwinStartup(typeof(SignalRChart.Startup))]

namespace SignalRChart
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
// 有关如何配置应用程序的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkID=316888
app.MapSignalR();
}
}
}

  

添加一个index.html

1.导入js

    <!--Script references. -->
<!--Reference the jQuery library. -->
<script src="Scripts/jquery-1.9.1.min.js"></script>
<!--Reference the SignalR library. -->
<script src="Scripts/jquery.signalR-2.2.0.min.js"></script>
<!--Reference the autogenerated SignalR hub script. -->
<script src="signalr/hubs"></script>

2.hub

// Declare a proxy to reference the hub.
var chat = $.connection.chatHub; // Call the Send method on the hub.
chat.server.send(name, message); // Create a function that the hub can call to broadcast messages.
chat.client.broadcastMessage = function (name, message) {
}

快速分析

Hub代码

Client代码

1.发送给所有客户端
Clients.All.onMsg

2.发送给单一客户端
Clients.Client(_clientID).onMsg

3.发送给其他客户端
Clients.AllExcept(_clientID).onMsg
Clients.Ohther.onMsg

4.发送给当前客户端
Clients.Caller.onMsg

注意事项

In ASP.NET MVC 4 you can do the following:

<script src="~/signalr/hubs"></script>

If you're writing an ASP.NET MVC 3 application, make sure that you are using Url.Content for your script references:

<script src="@Url.Content("~/signalr/hubs")"></script>

代码下载:等待整理

本文作者:Never、C

本文链接:http://www.cnblogs.com/neverc/p/4617488.html

[ASP.NET] 使用 ASP.NET SignalR 添加实时 Web的更多相关文章

  1. 使用SignalR实时Web应用程序

    实时Web应用程序能够实时地将服务器端内容推送到连接的客户端.对于ASP.NET开发人员,ASP.NET SignalR是一个向其应用程序添加实时Web功能的库.它利用了多种传输方式,根据客户端和服务 ...

  2. Asp.net SignalR 让实时通讯变得简单

    巡更项目中,需要发送实时消息,以及需要任务开始提醒,于是便有机会接触到SignalR,在使用过程中,发现用SignalR实现通信非常简单,下面我思明将从三个方面分享一下: 一.SignalR是什么 A ...

  3. 使用 ASP.NET SignalR实现实时通讯

    ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程.实时 Web 功能是指这样一种功能:当所连接的客户端变得可用时服务 ...

  4. Asp.net SignalR 让实时通讯变得如此简单

    巡更项目中,需要发送实时消息,以及需要任务开始提醒,于是便有机会接触到SignalR,在使用过程中,发现用SignalR实现通信非常简单,下面我思明将从三个方面分享一下: 一.SignalR是什么 A ...

  5. [Asp.net 开发系列之SignalR篇]专题一:Asp.net SignalR快速入门

    一.前言 之前半年时间感觉自己有点浮躁,导致停顿了半年多的时间没有更新博客,今天重新开始记录博文,希望自己可以找回初心,继续沉淀.由于最近做的项目中用到SignalR技术,所以打算总结下Asp.net ...

  6. 在ASP.NET 5中使用SignalR

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:SignalR作为ASP.NET中进行Web实时双向通信的组件,在ASP.NET 5中 ...

  7. 在 Asp.NET MVC 中使用 SignalR 实现推送功能 [转]

    在 Asp.NET MVC 中使用 SignalR 实现推送功能 罗朝辉 ( http://blog.csdn.net/kesalin ) CC许可,转载请注明出处 一,简介 Signal 是微软支持 ...

  8. 在ASP.NET Core下使用SignalR技术

    一.前言 上次我们讲到过如何在ASP.NET Core中使用WebSocket,没有阅读过的朋友请参考 WebSocket in ASP.NET Core 文章 .这次的主角是SignalR它为我们提 ...

  9. ASP.NET Core 2.0 SignalR 示例

    # 一.前言 上次讲SignalR还是在<[在ASP.NET Core下使用SignalR技术](http://dotnet.ren/2017/02/21/%E5%9C%A8ASP-NET-Co ...

随机推荐

  1. how to read from __consumer_offsets topic

    来自:http://grokbase.com/t/kafka/users/15bs2r0m83/kafka-0-8-2-1-how-to-read-from-consumer-offsets-topi ...

  2. 联通宽带家庭网关HG110-B破解步骤

    先说说破解的意义,联通赠送的这个无线猫本身是带路由功能的,只是联通为了限制用户分享宽带,把拨号功能给禁用了,于是WIFI虽然能连上,但是不能用.我破解的目的就是达到让此路由既能有猫的拨号功能又能有路由 ...

  3. 转:TinyXM--优秀的C++ XML解析器

    读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好. TinyXML是一个开源的解 ...

  4. 高大上技术之sql解析

    Question: 为何sql解析和高大上有关系?Answer:因为数据库永远都是系统的核心,CRUD如此深入码农的内心...如果能把CRUD改造成高大上技术,如此不是造福嘛... CRUD就是Cre ...

  5. 关于css布局的几篇文章

    这可能是史上最全的CSS自适应布局总结 (http://www.cnblogs.com/qieguo/p/5421252.html) 使用 CSS 弹性框 (https://developer.moz ...

  6. 编程语言 IDE 对比

    IDE是集成开发环境的英文缩写,所谓集成开发环境,就是将你在开发过程中所需要的工具或功能集成到了一起,比如代码编写.分析.编译.调试等功能,从而最大化地提高开发者的工作效率. 每种编程语言都有一些特定 ...

  7. 使用 CountDownLatch 控制多个线程执行顺序

    已同步更新至:http://dxjia.cn/2015/08/countdownlatch-use/ 有时候会有这样的需求,多个线程同时工作,然后其中几个可以随意并发执行,但有一个线程需要等其他线程工 ...

  8. PHP操作MongoDB学习(转)

    1  mongodb启动时,设置启动项 C:\>mongodb\bin\mongod --config C:\mongodb.conf 其中mongodb.conf为:    dbpath = ...

  9. httpwebrequest 服务器提交了协议冲突. section=responsestatusline

    调用接口的时候,包: httpwebrequest 服务器提交了协议冲突. section=responsestatusline 解决方案: req.KeepAlive = false; req.Al ...

  10. 让VS2010/VS2012添加新类时自动添加public关键字

    在VS添加类别的时候,每次都需要添加public关键字,表示好麻烦. 但是可以避免这个麻烦的. 通过修改VS2010的ItemTemplate,可以避免这个麻烦. 修改方法如下: 1. 打开文件夹Mi ...