28

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

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

4

3 回答 3

35

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

这意味着您不能直接使用来自HttpListenerASP.NET 或 ASP.NET 的框架支持。

但是:至于“是否可以创建 WebSocket 服务器”-当然……但前提是您自己处理 TCP/IP 通信,或者使用第 3 方库。这有点烦人,但并不像听起来那么糟糕。

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

然而,我很惊讶地发现客户端部分不起作用,因为:这更简单并且不(或至少不需要)涉及 HTTP.SYS。尝试使用它们会引发PlatformNotSupportedException.

于 2012-08-22T12:52:21.020 回答
6

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

于 2014-08-19T09:24:30.437 回答
0

引用System.Net.WebSockets 文档

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

换句话说:DIY实际实现。

于 2019-10-14T23:47:56.680 回答