[ASP.NET] 使用 ASP.NET SignalR 添加实时 Web

  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

posted @ 2015-07-27 16:44  Never、C  阅读(2564)  评论(2编辑  收藏  举报