socket.io连接在我的代码中集成对等服务器后失败
您好,正如您所知,公共服务器已关闭,因此我尝试在对等服务器上托管我的服务器 我已经有一个用于聊天的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连接到服务器...我在服务器中没有收到错误,我只是收到客户端错误
WebSocket 连接到 'ws://localhost:8080/socket.io/?EIO=4&transport=websocket' 失败:无效的帧头
服务器已启动并且 我将得到响应,
工作,如果我在浏览器中输入 localhost:8080,如果我删除对等服务器代码,
它会正常工作,我可以将对等服务器移动到单独的代码并在不同的端口上运行,但我更喜欢将其保留在此代码
中知道为什么会发生这种情况吗?
hi as you know public server is down so i tried to host my on peer server
i already had a nodejs/express server up for chat ... so i tried to integrate peer server on my chat server
here is simplified version of my code
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} `);
});
the problem is after adding peer server to my code i cant establish any socket.io connection to the server ... i get no errors in the server i just get the client side error
WebSocket connection to 'ws://localhost:8080/socket.io/?EIO=4&transport=websocket' failed: Invalid frame header
server is up and working , if i type localhost:8080 in the browser i will get the response
if i remove peer server code it would work fine
i can move peer server to separate code and run on a different port but i prefer to keep it in this code
any idea why this happening ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据这个问题,不可能运行
socket.io
和同一express(/http(s)服务器)实例上的PEERJS服务器。您应该能够从同一代码文件启动单独的PEERJS服务器,如这里所述:
According to this issue, it's not possible to run
socket.io
and a PeerJS server on the same Express(/http(s) server) instance.You should be able to start a separate PeerJS server from the same code file, as explained here: