所以我在 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:错误:与服务器的连接丢失。
所以很明显不敢相信我错过了这个,但以防万一其他人也犯了这个错误。
在将 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);