2012-08-22 96 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对此做了一些更多的研究/测试;答案的立场。 –

相关问题