问题描述
我正在尝试建立一个快速的peerJs服务器并通过HTTPS在本地运行。现在,如果我通过CLI启动peerJS服务器,那么我可以很好地连接到它,并且一切正常,但是一旦尝试通过脚本运行peerJS服务器,我就无法连接到它。我在控制台中遇到net::ERR_CONNECTION_REFUSED
错误。
工作代码:
-server.js
const fs = require('fs');
const express = require('express');
const app = express();
const server = require('https').Server(
{ key: fs.readFileSync('vuekey.pem'),cert: fs.readFileSync('vuecert.pem') },app
);
const io = require('socket.io')(server);
const { v4: uuidV4 } = require('uuid');
app.set('view engine','ejs');
app.use(express.static('public'));
app.get('/',(req,res) => {
res.redirect(`/${uuidV4()}`);
});
app.get('/:room',res) => {
res.render('room',{ roomId: req.params.room });
});
io.on('connection',(socket) => {
socket.on('join-room',(roomId,userId) => {
socket.join(roomId);
socket.to(roomId).broadcast.emit('user-connected',userId);
socket.on('disconnect',() => {
socket.to(roomId).broadcast.emit('user-disconnected',userId);
});
});
});
server.listen(3000);
-client.js
const myPeer = new Peer(undefined,{
host: '/',port: '3001',});
我首先运行peerjs --port 3001 --sslkey'E:\ myPath \ vuekey.pem'--sslcert'E:\ myPath \ vuecert.pem'手动启动PeerJS服务器。这一切都很好,我没有问题。但是我想让PeerJS服务器作为我的主服务器脚本的一部分运行。所以我用ExpresspeerServer
来做。因此,在我的 server.js 文件中,添加了以下代码,但这就是抛出控制台错误的时候了。
const { ExpresspeerServer } = require('peer');
const peerServer = ExpresspeerServer(server,{
debug: true,ssl: {
key: fs.readFileSync('vuekey.pem'),cert: fs.readFileSync('vuecert.pem'),},});
app.use('/peerjs',peerServer);
PeerJS CLI与我的server.js代码有何不同?我该如何解决?
解决方法
我终于弄清楚了。 Express服务器和对等服务器位于单独的端口中,我需要在Peer对象中添加path参数。
-server.js
const peerServer = ExpressPeerServer(server,{
debug: true,port: '3000',ssl: {
key: fs.readFileSync('vuekey.pem'),cert: fs.readFileSync('vuecert.pem'),},});
-client.js
const myPeer = new Peer(undefined,{
host: '/',// This will force the localhost/IP of the machine
path: '/peerjs',// Path that was specified in the server.js file for the peerServer's app.use() method.
port: '3000',// This needs to be the same port as specified in the server.js
});
进行这些较小的更改后,所有内容都可以通过HTTPS正常运行