• [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

  • 相关阅读:
    c# PrintDocument 设置自定义纸张大小的示例
    C#获取本地打印机列表,并将指定打印机设置为默认打印机
    水晶报表自定义纸张大小打印 (Crystal Report Print with custom paper size)
    c#打印机设置,取得打印机列表及相应打印机的所有纸张格式
    在C#中设置打印机纸张大小
    打印grid
    获取List集合中最大值的方法
    mysql使用索引优化查询效率
    mysql数据库中标的key的含义
    mysql数据库添加索引优化查询效率
  • 原文地址:https://www.cnblogs.com/neverc/p/4617488.html
Copyright © 2020-2023  润新知