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' });
如您所知,您好 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' });