node.js 服务器和循环上的 socket.io 出现问题

问题描述 投票:0回答:1

我想为学校项目创建一个小型 Web 应用程序,该应用程序应该显示有关体育比赛的仪表板。因此,不同的人可以访问它并添加/减去积分。我使用 socket.io 和 node.js 创建了这个应用程序。它在本地主机上完美运行,但我也通过循环部署它,但它根本不运行。我的网站在 https://zealous-frog-tutu.cyclo.app 下运行,我不断收到错误

WebSocket connection to 'wss://zealous-frog-tutu.cyclic.app/socket.io/?EIO=4&transport=websocket&sid=n-nRy6LHG-eD8QT3AAAR' failed: WebSocket is closed before the connection is established.
WebSocket connection to 'wss://zealous-frog-tutu.cyclic.app/socket.io/?EIO=4&transport=websocket&sid=7ATD-aEznbKrmdzCAAAM' failed: There was a bad response from the server.
。它还说
{"code": 1, "message": "Session ID unknown"}
。您可以在 GitHub 上找到我的代码。

我已经问过 ChatGPT 但它无法帮助我。它说要在客户端写

const socket = io('https://zealous-frog-tutu.cyclic.app');
,但这并没有直接改变任何东西。另外,我也尝试过

const socketIO = require('socket.io');

const server = http.createServer(app);
const io = socketIO(server, {
    cors: {
        origin: "https://zealous-frog-tutu.cyclic.app", // Update with your actual client's origin
        methods: ["GET", "POST"],
        credentials: true
    },
    transports: ['websocket'] // Explicitly specify the WebSocket transport
});

但是错误消息也没有消失。我认为这个问题与 Node.js 服务器上的多个 socket.io 事件有关,但我真的不知道还能做什么,因为我只有很少的编码经验。

有人知道我需要做什么吗?感谢您提前的帮助。

javascript node.js server socket.io real-time
1个回答
0
投票

当我创建一个实时代码编辑器并且它使用套接字时,这也发生在我身上。一切在本地主机上运行良好,但是当我在 aws 上手动托管它时(意味着我自己配置了服务器和反向代理),套接字部分就出现了一些问题。包含 HTTP 请求的应用程序的其余部分工作正常,但此套接字部分却不然。所以,我决定不使用AWS,而是选择railway或render(我不记得之前这个应用程序是在heroku上托管的,但他们关闭了免费层)这些平台(Saas)无法正确托管我的WS部分或者他们说免费套餐不支持套接字功能。所以我决定切换回AWS。然后我发现我只将 nginx 配置为处理 http 请求,而不处理 WS 请求。我不记得确切的步骤,但在谷歌搜索 amd 配置 nginx 后,我的 WS 部分工作正常。现在就您的情况而言,由于 cyclo 是一种 SaaS,您只是被告知上传源代码,因此我认为您在免费套餐中无法做太多事情。或者你必须找到他们的 ws 服务部分。

© www.soinside.com 2019 - 2024. All rights reserved.