在iisnode上托管peerjs服务器,客户端无法连接状态“已完成”,状态应为“101”,不知道为什么会发生这种情况?

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

所以我在 ws 上构建了一个 WebSocket 服务器,这非常适合发送基本消息。 接下来我想做的是使用 PeerServer 服务器端和 PeerJS 客户端创建一个点对点调用服务。 但是客户端无法连接到服务器,WebSocket 不断返回状态:“已完成”。 这又是专门的 iisnode

这是我的 web.config 文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <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/?.*" />
                    <action type="Rewrite" url="\NodeJS\PeerJS\Server\node_app.js" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

规则 name="ws" 用于基本 WebSocket 服务器。

PeerServer 的服务器端代码“\NodeJS\PeerJS\Server ode_app.js”:

// 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('/', ExpressPeerServer(peerServer, options));
peerServer.listen(peerPort);

客户端 JavaScript :

window.addEventListener('load', function() {
    var url = '/NodeJS/PeerJS/Server/'; 
    var peer_url = location.hostname + url;
    var thisCallerID = 123; 
    
    peerJS = new Peer(thisCallerID,{
        host: location.hostname,
        path: url,
        debug: 1
    });
}); 

我在服务器端得到的错误日志是:

(node:17520) [DEP0005] DeprecationWarning:由于安全和可用性问题,Buffer() 已被弃用。请改用 Buffer.alloc()、Buffer.allocUnsafe() 或 Buffer.from() 方法。 (使用

node --trace-deprecation ...
显示警告发生的位置 吃过)

但是我也在 WebSocket 服务器上收到此警告,并且它工作得很好。

任何帮助将不胜感激。

##编辑##

客户端控制台错误:

socket.ts:42 与“wss://mydomain.co.za/NodeJS/PeerJS/Server?key=peerjs&id=123&token=s0gab0l3rf9&version=1.5.4”的 WebSocket 连接失败:

logger.ts:76错误PeerJS:错误:与服务器的连接丢失。

javascript express peerjs iisnode
1个回答
0
投票

所以很明显不敢相信我错过了这个,但以防万一其他人也犯了这个错误。

在将 Express 应用程序设置为使用 ExpressPeerServer 的 PeerJS 服务器文件中,该文件将 url 路径作为参数。该路径需要是文件的实际 URL 路径,在我的例子中为“/NodeJS/PeerJS/Server/”。

// 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);
© www.soinside.com 2019 - 2024. All rights reserved.