zoukankan      html  css  js  c++  java
  • 创建自托管的SignalR服务端

    微软官方例子地址:http://www.asp.net/signalr/overview/deployment/tutorial-signalr-self-host

    1、说明:

        SignalR服务端可以使Asp.net程序,也就可以是控制台或服务程序这种不需要再IIS上托管的程序。这就是本篇文章的内容介绍。

    2、安装扩展:

        使用Nuget控制台:Install-Package Microsoft.AspNet.SignalR.SelfHost自托管服务端所需要的程序集。    

                Install-Package Microsoft.Owin.Cors跨域访问所需,SignalR服务端与客户端不在同一域上。

    3、新建(控制台项目):

        ①新建Startup类,第一句为跨域所要设置的

    app.UseCors(CorsOptions.AllowAll);
    app.MapSignalR();

        ②新建Hub类,定义Send推送方法,在此方法中会调用客户端定义的方法。

    public class MyHub : Hub
        {
            public void Send(string name, string message)
            {
                Clients.All.addMessage(name, message);
            }
        }

        ③在main方法中启动SignalR服务端

    string url = "http://localhost:8080";
                using (WebApp.Start(url))
                {
                    Console.WriteLine("Server running on {0}", url);
                    Console.ReadLine();
                }

    4、新建(Web项目):    

          在此项目中,将使用到上一步中得到的SignalR服务端来向客户端推送数据。

          注意几点:

              ①此时的hub地址为上一步定义好的url地址。

    <script src="Scripts/jquery.signalR-2.1.0.min.js"></script>
    <script src="http://localhost:8080/signalr/hubs"></script>

              ②要连接的Hub地址要与上一步中保持一致,hub类名在这里使用时注意首字母小写。

    $.connection.hub.url = "http://localhost:8080/signalr";
     $(function () {
            //Set the hubs URL for the connection
                $.connection.hub.url = "http://localhost:8080/signalr";
                
                // Declare a proxy to reference the hub.
                var chat = $.connection.myHub;
                
                // Create a function that the hub can call to broadcast messages.
                chat.client.addMessage = function (name, message) {
                    // Html encode display name and message.
                    var encodedName = $('<div />').text(name).html();
                    var encodedMsg = $('<div />').text(message).html();
                    // Add the message to the page.
                    $('#discussion').append('<li><strong>' + encodedName
                        + '</strong>:&nbsp;&nbsp;' + encodedMsg + '</li>');
                };
                // Get the user name and store it to prepend to messages.
                $('#displayname').val(prompt('Enter your name:', ''));
                // Set initial focus to message input box.
                $('#message').focus();
                // Start the connection.
                $.connection.hub.start().done(function () {
                    $('#sendmessage').click(function () {
                        // Call the Send method on the hub.
                        chat.server.send($('#displayname').val(), $('#message').val());
                        // Clear text box and reset focus for next comment.
                        $('#message').val('').focus();
                    });
                });
            });

    5、生成之后,先启动SignalR服务端。

        

         

  • 相关阅读:
    软件测试中桩模块与驱动模块的概念与区别(转载),打桩
    DataFactory使用和注意,排列组合
    SCWS中文分词,功能函数实例应用
    按指定长度截取中英文混合字符串
    CSS截取中英文混合字符串长度
    使DIV相对窗口大小左右拖动始终水平居中
    浮动5-常用列表显示(案例)
    多选项卡切换原理
    使当前对象相对于上层DIV 水平、垂直居中定位
    使图片相对于上层DIV始终水平、垂直都居中
  • 原文地址:https://www.cnblogs.com/zhaoyihao/p/4644082.html
Copyright © 2011-2022 走看看