我知道Windows 7不支持.Net 4.5的ClientWebSocket类,但可以使用.Net 4.5 API创建在Windows 7上运行的WebSocket服务器吗?
为了让自己更清楚,根据here和here,看起来即使在Windows 7上也应该支持.Net 4.5 WebSocket实现的服务器端部分,但运行HttpListener和试图使用开源WebSocket实现访问它让我得到“Portocol不支持”错误
答案 0 :(得分:34)
对于websockets的操作系统级HTTP.SYS支持仅限于Win8 / Windows Server 2012 - 我同意这是愚蠢的(它应该是Windows更新的一部分,或者最多是IMO的服务包)。 / p>
这意味着您无法直接使用来自HttpListener
或ASP.NET的WebSockets的框架支持。
但是:至于“是否有可能创建一个WebSocket服务器” - 确定......但仅当您自己处理TCP / IP通信时,或者使用第三方库时。这是小令人讨厌,但并不像听起来那么糟糕。
编辑:经过一些检查,我可以确认此的服务器端组件在Windows 7(等)上工作; IsWebSocketRequest
返回false
,即使,它是包含Connection: Upgrade
和Upgrade: 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实际的实现。