Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 信号器一个连接多个集线器、多个处理器_Javascript_C#_Signalr - Fatal编程技术网

Javascript 信号器一个连接多个集线器、多个处理器

Javascript 信号器一个连接多个集线器、多个处理器,javascript,c#,signalr,Javascript,C#,Signalr,理想情况下,我希望建立一个到多个集线器的连接,但在连接启动后注册客户端处理程序 工作原理: 每个集线器有多个连接,并在连接之前注册处理程序-我希望尽可能减少连接,也可能不知道/不想事先注册所有处理程序 每次都得停下来又开始 注册新消息-这是有问题的,因为您可能会在其他地方中断另一条消息 什么不起作用: 使用官方文档“在客户端上定义方法(无 生成的代理,或在调用start方法后添加时) -只有将处理程序添加到先前已启动的同一集线器连接时,此操作才有效。如果启动到新集线器的连接,新处理程序将不

理想情况下,我希望建立一个到多个集线器的连接,但在连接启动后注册客户端处理程序

工作原理:

  • 每个集线器有多个连接,并在连接之前注册处理程序-我希望尽可能减少连接,也可能不知道/不想事先注册所有处理程序
  • 每次都得停下来又开始 注册新消息-这是有问题的,因为您可能会在其他地方中断另一条消息
什么不起作用:

  • 使用官方文档“在客户端上定义方法(无 生成的代理,或在调用start方法后添加时) -只有将处理程序添加到先前已启动的同一集线器连接时,此操作才有效。如果启动到新集线器的连接,新处理程序将不会注册,因为集线器以前没有连接到OnConnect的处理程序
  • 偶然发现这个网站 但他的实现也不起作用。我可能做了些什么 错误地
        //multiple connections method = works
        var _page_connection = $.hubConnection();
        var _page_connection2 = $.hubConnection();
        function connectionOne() {
            var proxy1 = _page_connection.createHubProxy('hub_Echo');
            if (_page_connection && _page_connection.state === $.signalR.connectionState.disconnected) {
                proxy1.on('echo', function (msg) { console.log('Echo1: ' + msg); });
                _page_connection.start()
                    .done(function () { console.log('Now connected, connection ID=' + _page_connection.id); })
                    .fail(function () { console.log('Could not connect'); });
            } else {
                console.log('Already connected, connection ID=' + _page_connection.id);
                proxy1.on('echo', function (msg) { console.log('Echo1: ' + msg); });
                _page_connection.start()
                    .done(function () { console.log('Connected again, connection ID=' + _page_connection.id); })
                    .fail(function () { console.log('Could not connect'); });
            }
            $('#btn_echosend').on('click', function () {
                proxy1.invoke('echo', 'marco');
            });
        }

        function connectionTwo() {
            var proxy2 = _page_connection2.createHubProxy('hub_Echo2');
            if (_page_connection2 && _page_connection2.state === $.signalR.connectionState.disconnected) {
                proxy2.on('echo2', function (msg) { console.log('Echo2: ' + msg); });
                _page_connection2.start()
                    .done(function () { console.log('Now connected, connection ID=' + _page_connection2.id); })
                    .fail(function () { console.log('Could not connect'); });
            } else {
                console.log('Already connected, connection ID=' + _page_connection.id);
                proxy2.on('echo2', function (msg) { console.log('Echo2: ' + msg); });
                _page_connection2.start()
                    .done(function () { console.log('Connected again, connection ID=' + _page_connection2.id); })
                    .fail(function () { console.log('Could not connect'); });
            }
            $('#btn_echosend2').on('click', function () {
                proxy2.invoke('echo2', 'polo');
            });
        }
        function SignalRClient(methods) {
            this._handlers = {};
            methods.forEach(this.registerHandler.bind(this));
        }

        SignalRClient.prototype.invokeHandler = function (name) {
            var handler = this._handlers[name];
            if (handler) {
                var handlerArgs = Array.prototype.slice.call(arguments, 1);
                handler.apply(this, handlerArgs);
            }
        };

        SignalRClient.prototype.registerHandler = function (name) {
            var getter = this.invokeHandler.bind(this, name);
            Object.defineProperty(this, name, {
                enumerable: true,
                get: function () {
                    return getter;
                },
                set: function (value) {
                    this._handlers[name] = value;
                }.bind(this)
            });
        };
        function connectionTwo() {             
            $.connection.hub_Echo2.client = new SignalRClient(['echo', 'echo2']);                        
            $.connection.hub_Echo2.connection.start().done(function () { console.log('Now connected, connection ID=' + $.connection.hub.id); })                    
            $.connection.hub_Echo2.client.echo = function (data) { console.log('Echo2: ' + data); };
            $('#btn_echosend2').on('click', function () {
                $.connection.hub_Echo2.server.echo('Polo');
            });
        }
        function connectionOne() {                        
            $.connection.hub_Echo.client = new SignalRClient(['echo', 'echo2']);
            $.connection.hub_Echo.connection.start().done(function () { console.log('Now connected, connection ID=' + $.connection.hub.id); })                    
            $.connection.hub_Echo.client.echo = function (data) { console.log('Echo: ' + data); };
            $('#btn_echosend').on('click', function () {
                $.connection.hub_Echo.server.echo('Marco');
            });
        }