2012-08-22 123 views
26

我知道Windows 7不支持.Net 4.5的ClientWebSocket類,但可以使用.Net 4.5 API創建在Windows 7上運行的WebSocket服務器嗎?.Net 4.5在Windows 7上運行的WebSocket服務器?

爲了讓自己更清楚,根據雙方herehere,它看起來像.NET 4.5的WebSocket實現的服務器端部分甚至應該在Windows 7的支持,但運行HttpListener,並試圖利用開放來訪問它源WebSocket的實現得到了一個「Portocol不支持」的錯誤

+0

雖然這是一個_interesting_的問題,它並沒有表現出很大的努力。你有什麼嘗試?據MSDN確實只支持Windows 8和Server 2012。你需要.NET內置支持嗎?否則,有各種適合您需求的第三方庫。 – CodeCaster

回答

34

對websockets的操作系統級的HTTP.SYS支持僅限於Win8/Windows Server 2012-我同意這是愚蠢的(它應該是一個windows-更新或服務包,IMO)。

這意味着您不能直接使用從HttpListener或ASP.NET的WebSockets的框架支持。

但是:至於「是否有可能創建一個WebSocket服務器」 - 當然......但只有當你自己處理TCP/IP通信,或者使用相同的第三方庫。這是一個令人討厭的,但並不像聽起來那麼糟糕。

編輯:經過一番檢查,我可以確認這個的服務器端組件不是在Windows 7(etc)上工作; IsWebSocketRequest返回false即使它是一個帶有Connection: UpgradeUpgrade: websocket(etc)頭的網絡套接字請求(來自Chrome會話,因爲它有幫助)。

我,但是,非常驚訝地發現,客戶端件不工作,因爲:這是簡單的,不(或至少不需要)涉及HTTP.SYS。試圖使用它們會拋出PlatformNotSupportedException

+0

爲了回答你的問題,雖然ClientWebSocket *僅*從Windows 8開始支持,服務器端類至少根據MSDN(http://msdn.microsoft.com/en-us/library/hh159274 .aspx) - *是*支持 – sternr

+1

@sternr我不認爲他們是;我認爲它會在運行時出錯。更令人感興趣的是:我的印象是Win7等支持'ClientWebSocket' **,因爲它不依賴於HTTP.SYS! –

+1

@sternr對此做了一些更多的研究/測試;答案的立場。 –

相關問題