socket.io 在我的代码中集成对等服务器后连接失败

socket.io connections failing after integrating peer server in my code

如您所知,您好 public 服务器已关闭,所以我尝试在对等服务器上托管我的服务器 我已经有一个 nodejs/express 聊天服务器...所以我尝试在我的聊天服务器上集成对等服务器

这是我的代码的简化版本

const  env = require('dotenv').config({ path: '.env' })
const express = require('express');
const { ExpressPeerServer } = require('peer');
const fs = require('fs');
const app = express();
const https = require('https');
const http = require('http');

let server ;

if(env.parsed.PROTOCOL === 'https')
{
    // server =  create https server
}
else
{
     server = http.createServer( app);
}


const { Server } = require("socket.io");
const io = new Server(server);

const peerServer = ExpressPeerServer(server, {
    debug: true
});
app.use('/peerjs', peerServer);


io.sockets.on('connection', function(socket) {
    console.log(`@ connection | socket -> ${socket.id} |`);
});


var PORT = env.parsed.PORT  || 8080

server.listen(PORT, () => {
    console.log(`listining to port ${PORT} `);
});

问题是在我的代码中添加对等服务器后,我无法与服务器建立任何 socket.io 连接...我在服务器中没有收到任何错误,我只是收到客户端错误

与 'ws://localhost:8080/socket.io/?EIO=4&transport=websocket' 的 WebSocket 连接失败:无效的帧头

服务器已启动并正常工作,如果我在浏览器中键入 localhost:8080,我将收到响应

如果我删除对等服务器代码,它将正常工作

我可以将对等服务器移动到单独的代码和 运行 在不同的端口上,但我更喜欢将其保留在此代码中

知道为什么会这样吗?

根据 this issue,不可能 运行 socket.io 和同一个 Express(/http(s) 服务器) 实例上的 PeerJS 服务器。

您应该能够从同一个代码文件启动一个单独的 PeerJS 服务器,as explained here:

const { PeerServer } = require('peer');

const peerServer = PeerServer({ port: 9000, path: '/myapp' });