2013-07-17 31 views
1

我正在使用SignalR 2.0測試版。從Chrome,Firefox和IE10我看到使用的傳輸始終是longPolling。SignalR始終使用longpolling

http://localhost:8080/signalr/poll?transport=longPolling&connectionToken=123456 

我從Windows服務運行集線器,並讓JavaScript集線器代理作爲客戶端進行連接。

服務器端代碼:

WebApp.Start<StartUp>("http://*:8080"); 

public class StartUp 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     var config = new HubConfiguration { EnableCrossDomain = true }; 
     app.MapHubs(config); 
    } 
} 

客戶端代碼:

function configureMessaging() { 

var connectionMain = $.hubConnection('http://localhost:8080'); 
connectionMain.stateChanged(connectionStateChanged); 
connectionMain.start({ waitForPageLoad: false, xdomain: false, jsonp: false }); 

var vmgrHub = connectionMain.createHubProxy("vmgrHub"); 

$("#broadcast").click(function() { 
    vmgrHub.invoke('globalMessage', $("#msg").val()); 
}); 

vmgrHub.on('addGlobalMessage', function (message) { 
    $("#message").text(message); 
}); } 

在生產中,應用程序將需要跨域支持,但在所提供的示例, Windows服務和JavaScript客戶端都在本地主機上。

如何讓WebSockets在支持它的瀏覽器中工作?

謝謝!

+0

是您的應用程序託管在Windows Server 2012或Windows 8? – MEYWD

+0

[SignalR w/Web Sockets]的可能重複(http://stackoverflow.com/questions/11601561/signalr-w-web-sockets) – MEYWD

+0

Windows Service在Windows 2008 R2中運行。這也是我的開發環境。 – ISZ

回答

2

SignalR Supported Platforms

另請注意,SignalR使用WebSockets,IIS 8或IIS 8快遞 必須使用,服務器必須使用Windows 8和Windows Server 2012 ,或更高版本。

+0

好的,我認爲就是這樣。我將設置一個2012年的虛擬機來證明這一點......但是,我不確定爲什麼在操作系統級別需要WebSockets。 IIS8是有道理的,但我沒有使用IIS。 – ISZ

+0

使用Owin/Katana碎片的自託管仍然需要Windows Server 2012 for WebSockets,因爲依賴項位於操作系統中的HTTP.SYS版本上。 IIS和自主主機都使用HTTP.SYS,並且直到Windows Server 2012才支持WebSocket。 –

+0

這很有道理......我只是設置了一個2012實例,並發現了安裝Websockets的功能... Web服務器(IIS )> Web服務器>應用程序開發> Web Socket協議。 – ISZ