Javascript 信号器-多个集线器-单独启动连接
我有一个Javascript 信号器-多个集线器-单独启动连接,javascript,jquery,asp.net,signalr,Javascript,Jquery,Asp.net,Signalr,我有一个signal应用程序,它有多个集线器(集线器是同一解决方案中不同项目的一部分) 在前端,我想根据用户当前查看的组件启动连接 假设我有两个集线器和两个组件:TestHub1,TestHub2组件1,组件2 在每个组件中,我将连接实例化如下: var testHub = $.connection.testHub; //define client methods $.connection.hub.logging = true;
signal
应用程序,它有多个集线器(集线器是同一解决方案中不同项目的一部分)
在前端,我想根据用户当前查看的组件启动连接
假设我有两个集线器和两个组件:TestHub1
,TestHub2
<代码>组件1,组件2
在每个组件中,我将连接实例化如下:
var testHub = $.connection.testHub;
//define client methods
$.connection.hub.logging = true;
$.connection.hub.start();
});
因此,我在多个组件中执行此操作。现在,假设我将两个组件分别连接到TestHub1
和TestHub2
,我怎么能只停止一个连接?如果在我调用的任何组件中$.connection.hub.stop()
,两个集线器连接都将停止
如何分别启动和停止集线器连接?(因为如果在我停止这两个操作后的某个时间点调用$.connection.hub.start()
,即使我从使用TestHub1
的组件调用它,TestHub2
也会启动连接
因此,我正在寻找一种启动和停止单个集线器连接的方法,而不是整个$.connection.start()
和$.connection.hub.stop()
谢谢!默认生成的代理类为所有集线器创建一个连接。因此,您可以让多个集线器在站点上共享一个连接。但所有集线器都获得相同的HTTP请求信息。 由于所有集线器共享相同的连接,服务器获得的唯一HTTP请求信息是建立SignalR连接的原始HTTP请求中的信息。如果使用连接请求通过指定查询字符串将信息从客户端传递到服务器,则不能提供不同的查询字符串ent集线器。所有集线器将接收相同的信息 要手动管理每个轮毂的连接,您需要自己实施代理:
var connection = $.hubConnection();
var contosoChatHubProxy = connection.createHubProxy('contosoChatHub');
contosoChatHubProxy.on('addContosoChatMessageToPage', function(name, message) {
console.log(name + ' ' + message);
});
connection.start().done(function() {
// Wire up Send button to call NewContosoChatMessage on the server.
$('#newContosoChatMessage').click(function () {
contosoChatHubProxy.invoke('newContosoChatMessage', $('#displayname').val(), $('#message').val());
$('#message').val('').focus();
});
});
请查看此处以了解更多详细信息您仍然在$.hubConnection()上调用start()。这不是也会启动每个集线器吗?@RSinohara很好,我问了自己同样的问题。不管怎样,尤里的答案都有效。请尝试使用ContosChatHubProxy.connection.ID记录连接ID。。。