如何将信号器应用于不同的URL?

时间:2015-10-23 05:41:57

标签: asp.net-mvc asp.net-mvc-4 cors signalr

看下面的这个jQuery格式,我使用signalr在某个视图中播放实时内容。

到目前为止,我只能在一个特定视图中实时广播内容,即'/ MyController / MyActionMethod'

现在我还有两个视图可以播放与第一个视图相同的内容,这些视图是

  • '/ MyController2 / MyActionMethod2';
  • 分别是
  • '/ MyController3 / MyActionMethod3';

下面的jQuery代码在第一个视图中被引用,现在我添加了一些语法,比如在另外两个视图上启用相同的代码:

$.connection.hub.url = 'http://localhost:1334/MyController2/MyActionMethod2';  
$.connection.hub.url = 'http://localhost:1334/MyController3/MyActionMethod3';

但是这段代码没有做任何事情。

我在这里缺少什么?有什么需要补充的吗?我是否还需要在两个视图中引用该代码?请指教,谢谢。

$(function() { 
    // Save the reference to the SignalR hub 
    var comHub = $.connection.commentHub;
    comHub.client.newContent = function () {
        // Sample functions to refresh the page based on information coming 
        // from the server.
        RefreshPage();
        UpdateContent();

    };

    // Invoke the function to be called back from the server 
    // when changes are detected  

    $.connection.hub.url = 'http://localhost:1334/MyController2/MyActionMethod2';
    $.connection.hub.url = 'http://localhost:1334/MyController3/MyActionMethod3';

    // Start the SignalR client-side listener
    $.connection.hub.start().done(function () { 
  $("#pushbutton").click(function () {
    //...some function to trigger here
})

})

})

1 个答案:

答案 0 :(得分:0)

我想我明白你在问什么,你不需要添加这两行代码:

$.connection.hub.url = 'http://localhost:1334/MyController2/MyActionMethod2';
$.connection.hub.url = 'http://localhost:1334/MyController3/MyActionMethod3';

$.connection.hub.url用于覆盖客户端用于连接到Hub的路由URL,如here所述(并且无论如何第二行覆盖第一行)。

您需要做的是在需要接收数据的所有三个视图中添加连接到SignalR Hub的代码,并管理如何处理这些数据。