將 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" />