hi,正如您所知,公共服务器已关闭,所以我尝试在对等服务器上托管我已经有一个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/?"的WebSocket连接?EIO=4&transport=websocket失败:帧头无效
服务器已经启动并工作,如果我在浏览器中键入localhost:8080,我将得到响应
如果我删除对等服务器代码,它将正常工作
我可以将对等服务器移动到单独的代码并在不同的端口上运行,但我更喜欢将其保留在这个代码中
知道为什么会发生这种事吗?
根据此问题,不可能在同一Express(/http(s(server(实例上运行socket.io
和PeerJS服务器。
您应该能够从相同的代码文件启动一个单独的PeerJS服务器,如下所述:
const { PeerServer } = require('peer');
const peerServer = PeerServer({ port: 9000, path: '/myapp' });