【问题标题】:SignalR connect to multiple serversSignalR 连接到多个服务器
【发布时间】:2015-06-03 12:11:46
【问题描述】:

是否可以使用 Javascript 客户端连接到多个 SignalR 服务器?

例如:

<script type="text/javascript">
    $.connection.hub.url = 'http://server1.net/signalr';
    var server1Hub = $.connection.server1Hub;

    $.connection.hub.start().done(function () {

    });

    // i need to connect to server2
    $.connection.hub.url = 'http://server2.net/signalr';
    var server2Hub = $.connection.server2Hub;

    $.connection.hub.start().done(function () {

    });
</script>

第二次尝试连接(再次)给我一个错误:

'server1Hub' Hub could not be resolved.

我可以创建两个 $.connection 实例吗?显然我认为修改相同的connection 会产生很多问题。

【问题讨论】:

    标签: javascript asp.net signalr signalr.client signalr-backplane


    【解决方案1】:

    使用不同的$connection:

    var connection1 = $.connection('/first');
    connection1.start();
    
    var connection2 = $.connection('/second');
    connection2.start();
    

    订阅多个集线器:

    var connection1 = $.hubConnection("'http://server1.net/signalr");
    var connection2 = $.hubConnection("http://server2.net/signalr");
    
    var Hub1= connection1.createHubProxy('Hub1');
    var Hub2= connection2.createHubProxy('Hub2');
    
    connection1.start();
    connection2.start();
    

    在这里阅读更多: here在客户端定义方法(没有生成的代理,或在调用启动方法后添加)部分

    【讨论】:

      【解决方案2】:

      谢谢 SilentTremor。你为我节省了很多时间。

      如果你正在使用生成的代理,那么你可以使用类似的东西:

      var Hub1 = connection1.createHubProxies().<your hub class>
      

      替换为您自己的课程。然后只需从 Hub1 访问所有服务器功能。示例:

      var Hub1 = connection1.createHubProxies().Chat;
      ...
      Hub1.addMessage(name, message);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多