zoukankan      html  css  js  c++  java
  • SignalR

    一:GlobalHost 属性

         首先我们简单的看一下它的解释,叫做“提供对默认主机信息的访问”,可以看到,这是一个所谓的全局设置,里面的5个属性,个个都非常重要,因为

    对他们的设置,影响的都是全局性的,好了,作为这篇我们关注的就是其中之一ConnectionManager属性,如下图:

    它呢,就是获取你当前的Connection连接,好了,废话不多说,我们来做一个例子看一看。

    二:实例演示

    1. 伪造“外部系统”

     在这里我就Fake一个单独页面(mytest.aspx),假装从外面获取到了"我是mytest.aspx"这条数据,如下:

    在上图中,你也看到了GetConnectionContext方法是接受一个泛型的参数,而这个“泛型参数”,就是你的PersistentConnection实现类,这里也就

    是MyConnection1,当然这里不光可以访问Persistent,还可以访问Hub类,这个我们放到后续和大家讲解。

    2. 开启两个客户端

      开启这两个就是为了连接到我们的server,假装多用户,也就是PersistentConnection类,如下:

    复制代码
    <!DOCTYPE html>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <meta charset="utf-8" />
    </head>
    <body>
        <script src="/scripts/jquery-1.10.2.js"></script>
        <script src="/scripts/jquery.signalR-2.1.2.js"></script>
        <!--<script src="/signalr/js"></script>-->
        <script src="scripts/myjs.js"></script>
        <script type="text/javascript">
            var conn = $.connection("/myconnection");
    
            conn.start().done(function (data) {
                console.log(data.id);
            });
    
            conn.received(function (data) {
                console.log(data);
            });
    
        </script>
    </body>
    </html>
    复制代码
    复制代码
        public class MyConnection1 : PersistentConnection
        {
            protected override Task OnConnected(IRequest request, string connectionId)
            {
                Debug.WriteLine("OnConnected");
                return Connection.Send(connectionId, "Welcome!");
            }
    
            protected override Task OnReceived(IRequest request, string connectionId, string data)
            {
                Debug.WriteLine(data);
                return Connection.Send(connectionId, data);
            }
    
            protected override Task OnDisconnected(IRequest request, string connectionId, bool stopCalled)
            {
                Debug.WriteLine("OnDisconnected");
                return base.OnDisconnected(request, connectionId, stopCalled);
            }
    
            protected override Task OnReconnected(IRequest request, string connectionId)
            {
                Debug.WriteLine("OnReconnected");
                return base.OnReconnected(request, connectionId);
            }
        }
    复制代码

    现在两个client都开启了,然后各自都收到了server的欢迎信息,以及各自和server通信的标识。

    3. 访问mytest页面,模拟通知各个客户端,如下图:

    好了,这个也是本篇课程所讲的主要东西,虽然不显眼,但是在真实环境中对您确实非常的有帮助~~~

  • 相关阅读:
    委托的例子,from C# advanced program
    C#线程通信与异步委托
    进程间通信
    线程间通信
    投影转换(AE)
    FTP多任务下载实现类
    堆内存和栈内存详解(转)
    How threads differ from processes
    实现远程FTP特定时间轨道号MODIS数据的搜索
    委托的例子
  • 原文地址:https://www.cnblogs.com/slqd/p/7840520.html
Copyright © 2011-2022 走看看