Web Socket:Socket.io 需要启用 IIS WebSocket 协议功能吗?

问题描述 投票:0回答:1

对于我的一个应用程序,我使用 socket.io 实现了 Web 套接字并托管在 IIS 中。目前套接字连接有助于在客户端(React)和服务器(node.js)之间提供两种方式的连接。

正如我所提到的,我已在 IIS 中托管了我的应用程序。我对打开或关闭 Windows 功能 -> Internet 信息服务 -> 万维网服务 -> 应用程序开发功能 -> WebSocket 协议没有什么疑问。我在没有启用此功能的情况下测试了我的应用程序,它工作正常,但我想确认以下内容。 WebSocket Protocol

  1. 我真的需要启用 WebSocket 协议功能才能使 websocket 在我的应用程序中工作吗?如果是这样,现在如何在不启用的情况下正常工作(我还没有进行性能和压力测试,我可能会遇到这方面的问题)。

  2. 如果我不启用此功能怎么办?简而言之,这个功能的实际用途是什么?

如果有人回答上述问题将会很有帮助。预先感谢。

sockets iis websocket socket.io
1个回答
0
投票

WebSocket 作为 HTTP 堆栈的一部分需要在 Windows 上准备好很多东西(跨多个组件),所以希望这个答案能有所帮助。

  • HTTP.sys 是 Windows 操作系统深处的驱动程序,已升级以支持协议所需的必要数据包通信。
  • IIS WebSocket 模块,这是许多其他 Microsoft 框架(如 SignalR)所依赖的 IIS 扩展。

因此,HTTP.sys 中默认启用 WebSocket 支持,如果您的框架 (socket.io) 没有依赖项,则不需要 IIS 模块。

请注意,“摘要”部分提供了几个有用的链接,

https://learn.microsoft.com/en-us/iis/get-started/whats-new-in-iis-8/iis-80-websocket-protocol-support#summary

同一篇文章还揭示了 IIS WebSocket 模块 与socket.io冲突。

另请注意,如果您通过 HttpPlatformHandler 托管 Node.js Web 应用程序,则 IIS WebSocket 模块是必需的(或者 HttpPlatformHandler 无法将 WebSocket 流量转发到 Node.js)。

© www.soinside.com 2019 - 2024. All rights reserved.