SignalR连接到多个服务器

4

是否可以使用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可能会导致许多问题。

2个回答

7

使用不同的$connection:

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

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

订阅多个Hub:

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

点击此处进一步了解,该部分介绍如何在客户端定义方法(未使用生成的代理或在调用启动方法后添加方法)。


0

谢谢SilentTremor。你帮我省了很多时间。

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

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

用你自己的类替换。然后只需从Hub1访问所有服务器函数即可。例如:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接