2014-04-02 37 views
4

我有一個解決方案,需要使用CORS連接到signalr公開服務。 其中signalr服務將被託管的地址可以隨着時間變化,所以它不是 適合有經典的腳本標籤讓signalr生成代理中心url dynamic

<script src="http://server:8888/signalr/hubs" type="text/javascript"></script> 

但如果有要由JavaScript動態參考上面的網址某種程度上,這將是非常美妙沒有靜態腳本標記。 建議將會很棒!

+0

爲什麼不把腳本標籤靜電少:'

4

不要在你的JS文件如下:

$.getScript('http://server:8888/signalr/hubs', function() { 
    //Set the hubs URL for the connection 
    $.connection.hub.url = 'http://server:8888/signalr'; 
    var hub = $.connection.yourHub; //yourHub is name of hub on the server side 

    //wire up SignalR 

    //start hub 
    $.connection.hub.start().done(function() { 
     //once we're done with SignalR init we can wire up our other stuff 
    }); 
}); 
+0

感謝您的回答!幫助我出去! – Hardycore

0

我有這個相同的情況下,有些期試驗研究後,我們決定把生成的代理像波紋管物理腳本:

如何爲SignalR生成的代理

作爲alternati創建一個物理文件對於動態生成的代理,您可以創建一個 具有代理代碼並引用該文件的物理文件。您 可能想要這樣做來控制緩存或綁定行爲, 或在編碼調用服務器方法時獲取智能感知。

要創建一個代理文件,執行以下步驟:

安裝Microsoft.AspNet.SignalR.Utils NuGet包。

打開命令提示符並瀏覽到包含 SignalR.exe文件的工具文件夾。 Tools文件夾是在以下位置:

[您的解決方案 文件夾] \包\ Microsoft.AspNet.SignalR.Utils.2.1.0 \工具

輸入以下命令:

signalr GHP /路徑:[路徑。包含您的Hub類的dll]

您的.dll路徑通常是項目 文件夾中的bin文件夾。

此命令將在與signalr.exe相同的文件夾中創建一個名爲server.js的文件。

將server.js文件放入項目的相應文件夾中, 將其重命名爲適合您的應用程序,並添加對 的引用以代替「signalr/hubs」引用。

鏈接:How to create a physical file for the SignalR generated proxy

只要我們有代理,那麼你可以參考中心網址是這樣的:

$.connection.hub.url = "http://your-url/signalr; 
//open connection 
$.connection.hub.start() 
    .done(function() { 
     //do your stuff 
    }) 
    .fail(function() { alert('unable to connect'); });