将 Socket.io 与 IISNode 一起使用
要使 Socket.io 与 IISNode 一起使用,不使用虚拟目录/嵌套应用程序时所需的唯一更改是在 Web.config
中。
由于 Socket.io 发送以/socket.io
开头的请求,因此 IISNode 需要与 IIS 通信,这些也应该处理 IISNode,而不仅仅是静态文件请求或其他流量。这需要与标准 IISNode 应用程序不同的 <handler>
。
<handlers>
<add name="iisnode-socketio" path="server.js" verb="*" modules="iisnode" />
</handlers>
除了对 <handlers>
的更改之外,我们还需要添加额外的 URL 重写规则。重写规则将所有/socket.io
流量发送到运行 Socket.io 服务器的服务器文件。
<rule name="SocketIO" patternSyntax="ECMAScript">
<match url="socket.io.+"/>
<action type="Rewrite" url="server.js"/>
</rule>
如果你使用的是 IIS 8,除了添加上述处理程序和重写规则外,还需要在 Web.config
中禁用 webSockets 设置。这在 IIS 7 中是不必要的,因为没有 webSocket 支持。
<webSocket enabled="false" />