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

发布于 2025-01-17 10:46:23 字数 1262 浏览 4 评论 0原文

您好,正如您所知,公共服务器已关闭,因此我尝试在对等服务器上托管我的服务器 我已经有一个用于聊天的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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

溺渁∝ 2025-01-24 10:46:23

根据这个问题,不可能运行socket.io和同一express(/http(s)服务器)实例上的PEERJS服务器。

您应该能够从同一代码文件启动单独的PEERJS服务器,如这里所述

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

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

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:

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

const peerServer = PeerServer({ port: 9000, path: '/myapp' });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文