.Net 4.5在Windows 7上运行的WebSocket服务器?

时间:2012-08-22 12:44:51

标签: .net windows-7 websocket .net-4.5

我知道Windows 7不支持.Net 4.5的ClientWebSocket类,但可以使用.Net 4.5 API创建在Windows 7上运行的WebSocket服务器吗?

为了让自己更清楚,根据herehere,看起来即使在Windows 7上也应该支持.Net 4.5 WebSocket实现的服务器端部分,但运行HttpListener和试图使用开源WebSocket实现访问它让我得到“Portocol不支持”错误

3 个答案:

答案 0 :(得分:34)

对于websockets的操作系统级HTTP.SYS支持仅限于Win8 / Windows Server 2012 - 我同意这是愚蠢的(它应该是Windows更新的一部分,或者最多是IMO的服务包)。 / p>

这意味着您无法直接使用来自HttpListener或ASP.NET的WebSockets的框架支持。

但是:至于“是否有可能创建一个WebSocket服务器” - 确定......但仅当您自己处理TCP / IP通信时,或者使用第三方库时。这是令人讨厌,但并不像听起来那么糟糕。

编辑:经过一些检查,我可以确认此的服务器端组件在Windows 7(等)上工作; IsWebSocketRequest返回false ,即使,它是包含Connection: UpgradeUpgrade: websocket(等)标头的网络套接字请求(来自Chrome会话,因为它有帮助)。

然而, 非常惊讶 发现客户端部分不起作用,因为:这更简单但不是(或至少,不需要)涉及HTTP.SYS。尝试使用它们会抛出PlatformNotSupportedException

答案 1 :(得分:6)

正如Marc所说,Microsoft API在Windows 7上不起作用。但是有几个开源库支持Windows 7上的WebSockets,在某些情况下甚至可以通过Mono跨平台。

答案 2 :(得分:0)

引用System.Net.WebSockets documentation

  

System.Net.WebSockets命名空间中的某些类是   Windows 7,Windows Vista SP2和Windows Server 2008上受支持。   但是,客户端和服务器的唯一公共实现   Windows 8和Windows Server 2012支持WebSocket。   System.Net.WebSockets命名空间中的类和类元素   Windows 7,Windows Vista SP2和Windows Server 2008上支持   是抽象类。这允许应用程序开发人员继承   并通过实际实现扩展这些抽象类   客户端WebSockets。

换句话说:DIY实际的实现。