SignalR客户端具有多个连接(SignalR client with multiple conn

2019-07-21 19:49发布

我有多个SignalR“服务”运行,只有一个UI来访问它们。

我怎样才能让客户端JS谈与不同的URL多​​个连接? 因为似乎我只能指定每个$ .connection.hub一个网址,我不能使用多个“signalr /集线器”客户端脚本。

任何帮助吗? 谢谢。

Answer 1:

在/ signalr /集线器列入创建$ .connection.hub。

同时,它本质上是做文件的结尾:

$.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();


Answer 2:

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

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

它内部存储的承诺对象从开始(),并根据需要附加的处理程序。

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

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


文章来源: SignalR client with multiple connections