You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在iisnode部署PeerJS服务器,客户端无法正常连接(状态异常)

解决方案

1. 修正web.config的重写规则与WebSocket配置

iisnode环境下路径需使用正斜杠,且需显式启用WebSocket支持,修改后的web.config如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <!-- 启用WebSocket协议支持 -->
        <webSocket enabled="true" />
        <handlers>
            <add name="iisnode" path="node_app.js" verb="*" modules="iisnode" />
        </handlers>
        <rewrite>
            <rules>
                <rule name="ws" patternSyntax="ECMAScript" stopProcessing="true">
                    <match url="^NodeJS/WebSocket/WS/?$" />
                    <action type="Rewrite" url="/NodeJS/WebSocket/WS/node_app.js" />
                </rule>
                <rule name="peerjs" patternSyntax="ECMAScript" stopProcessing="true">
                    <match url="^NodeJS/PeerJS/Server(.*)$" />
                    <!-- 保留请求的后缀参数,确保PeerServer能获取完整请求信息 -->
                    <action type="Rewrite" url="/NodeJS/PeerJS/Server/node_app.js{R:1}" />
                </rule>
            </rules>
        </rewrite>
        <!-- 指定node.exe路径,确保iisnode能正确启动进程 -->
        <iisnode nodeProcessCommandLine="&quot;%programfiles%\nodejs\node.exe&quot;" />
    </system.webServer>
</configuration>

2. 调整PeerServer的挂载路径

客户端请求路径为/NodeJS/PeerJS/Server/,服务端需将PeerServer挂载到对应路径,修改服务端代码:

// peer_server
var ExpressPeerServer = require('peer').ExpressPeerServer;
var peerExpress = require('express');
var peerApp = peerExpress();
var peerServer = require('http').createServer(peerApp);
var options = { debug: true }
var peerPort = process.env.PORT;

// 挂载到与客户端匹配的路径
peerApp.use('/NodeJS/PeerJS/Server', ExpressPeerServer(peerServer, options));
peerServer.listen(peerPort);

3. 修正客户端PeerJS配置

匹配服务端挂载路径,并显式设置HTTPS环境下的WebSocket安全选项:

window.addEventListener('load', function() {
    var thisCallerID = 123; 
    
    peerJS = new Peer(thisCallerID,{
        host: location.hostname,
        path: '/NodeJS/PeerJS/Server', // 与服务端挂载路径完全一致
        debug: 1,
        secure: true // 适配wss协议(HTTPS环境)
    });
});

4. 验证IIS环境配置

  • 确认IIS已安装WebSocket协议(通过服务器管理器的角色功能添加)
  • 重启IIS服务和node进程,确保所有配置生效

内容的提问来源于stack exchange,提问作者Hilton Siegert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 06:00:02