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');
});
}