SignalR客户端具有多个连接

我有多个SignalR’服务’正在运行,只有一个UI可以访问它们。

如何让客户端js与不同Url的多个连接通信? 因为看起来我只能为$ .connection.hub指定一个url,而且我不能使用多个’signalr / hubs’客户端脚本。

有帮助吗? 谢谢。

$ .connection.hub在/ signalr / hubs包含中创建。

在文件的最后它基本上做:

$.connection.hub = $.hubConnection("/signalr", { useDefaultPath: false }); 

要创建集线器代理,您可以:

 var myHub = $.connection.hub.createHubProxy('myHub'); 

多个连接的简单示例:

 var connection1 = $.hubConnection("http://www.myfirstendpoint.com"); var connection2 = $.hubConnection("http://www.mysecondendpoint.com"); var myCon1Hub = connection1.createHubProxy('myCon1Hub'); var myCon2Hub = connection2.createHubProxy('myCon2Hub'); myCon1Hub.client.foo = function() { ... Whatever you want ... }; myCon2Hub.client.foo = function() { ... Whatever you want ... }; connection1.start(); connection2.start(); 

我对这种场合的解决方案:

 var SignalRHelpers = function () { var _connectionDeferred; var subscribeToConnectionStart = function (callback) { if (!_connectionDeferred) // start connection if not yet initialized _connectionDeferred = $.connection.hub.start(); if ($.connection.hub.state == $.connection.connectionState.connected && callback) { // already connected callback(); } else if (callback) { // register handler _connectionDeferred.done(callback); } }; return { SubscribeToConnectionStart: subscribeToConnectionStart }; }(); 

它在内部存储来自start()的promise对象,并根据需要附加处理程序。

基本上,每次需要连接时,只需调用SignalRHelpers.SubscribeToConnectionStart即可。 例如

 SignalRHelpers.SubscribeToConnectionStart(function(){ someHub.server.executeSomething(); });