当服务器具有基本URL时,为什么我的Web套接字呼叫失败?

发布于 2025-01-31 11:19:24 字数 1473 浏览 4 评论 0原文

我面临一个奇怪的问题。我有一个明确的后端服务器。当我没有用于后端的基本URL时,WS调用正常工作:

”在此处输入图像描述

但是,如果我添加一个基本URL(例如,添加/api/作为URL的一部分),,我的连接失败:

“在此处输入图像描述”

这是我后端代码的一部分:

const easyrtc = require("open-easyrtc"); // EasyRTC external module    
// Start Express http server
const webServer = http.createServer(app);

const socketIo = require("socket.io")(webServer, {path: '/api/'}); // web socket external module

// Start Socket.io so it attaches itself to Express server
const socketServer = socketIo.listen(webServer, { "log level": 1 });
easyrtc.listen(app, socketServer, null, (err, rtcRef) => {
  console.log("Initiated");

  rtcRef.events.on(
    "roomCreate",
    (appObj, creatorConnectionObj, roomName, roomOptions, callback) => {
      console.log("roomCreate fired! Trying to create: " + roomName);

      appObj.events.defaultListeners.roomCreate(
        appObj,
        creatorConnectionObj,
        roomName,
        roomOptions,
        callback
      );
    }
  );
});

// Listen on port
webServer.listen(port, () => {
  console.log("listening");
});

为什么会发生这种情况以及如何修复它?我已经茫然了一个星期。

I am facing a strange problem. I have a express backend server. When I do not have a base URL for my backend, the ws calls are working fine:

enter image description here

But, if I add a base URL ( for example, adding /api/ as part of the url ), my connections fail:

enter image description here

This the part of my backend code:

const easyrtc = require("open-easyrtc"); // EasyRTC external module    
// Start Express http server
const webServer = http.createServer(app);

const socketIo = require("socket.io")(webServer, {path: '/api/'}); // web socket external module

// Start Socket.io so it attaches itself to Express server
const socketServer = socketIo.listen(webServer, { "log level": 1 });
easyrtc.listen(app, socketServer, null, (err, rtcRef) => {
  console.log("Initiated");

  rtcRef.events.on(
    "roomCreate",
    (appObj, creatorConnectionObj, roomName, roomOptions, callback) => {
      console.log("roomCreate fired! Trying to create: " + roomName);

      appObj.events.defaultListeners.roomCreate(
        appObj,
        creatorConnectionObj,
        roomName,
        roomOptions,
        callback
      );
    }
  );
});

// Listen on port
webServer.listen(port, () => {
  console.log("listening");
});

Why does this happen and how can I fix it? I have been at a loss on this for a week now.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(1

隱形的亼 2025-02-07 11:19:24

/socket.io/路径选项的默认值。如果您使用{路径:'/api/'}选项,则应致电

ws://localhost:3000/api/?EIO=3....

ws:// localHost:3000/api/socket.io/?eio = 3 .. 。

https://socket.io/docs/v4/server-options/

The /socket.io/ is default value for path option. If you use {path: '/api/'} option, then you should call

ws://localhost:3000/api/?EIO=3....

instead of ws://localhost:3000/api/socket.io/?EIO=3...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文