使用Socket.IO以及Express和NodeJS导出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Socket.IO以及Express和NodeJS导出相关的知识,希望对你有一定的参考价值。

我试图连接我的Express和Socket连接。我想我的设置很整齐,但不是在我想这样做的时候:

  1. 用户创建新房间。 POST到后端Express服务器。
  2. 然后app.post()将输入发送到导出,该导出处理所有数据库连接。
  3. 当它保存在数据库中时,通过套接字向所有人广播已添加新房间。

这可以单独使用套接字吗?是。但我不是那种生活。

RoomRouter.js

exports.createRoom = (req, response) => {
    new Room(req.body).save((err, room) => {
        response.status(200).send(room);
    });
};

app.js

/*
 * Express setup is left out, because we don't need to focus on that.
 * "app" is const app = express();
 */
const RoomRouter = require("./RoomRouter");

app.post("/room/create", RoomRouter.createRoom);

io.on("connection", (socket) => {
    //I want to broadcast the room to everyone
    //io.emit("newRoom", room);
});

Express部分工作正常,POST工作正常。现在,我如何将Socket.IO连接到那个,所以我可以向所有人广播已添加新房间?

答案

我不确定你真正想要的是什么,但是如果你想在你的路线中使用socket io,我认为你必须这样声明你的路线:

RoomRouter.js

exports.createRoom = (io) => {
   return (req, response) => {
      new Room(req.body).save((err, room) => {
         io.emit("newRoom", room);
         response.status(200).send(room);
      });
   };
};

在你的app.js

app.post("/room/create", RoomRouter.createRoom(io));

希望能帮助到你。

以上是关于使用Socket.IO以及Express和NodeJS导出的主要内容,如果未能解决你的问题,请参考以下文章

Node.js - 在同一个端口上使用 Socket.io 和 Express

使用 Express、Socket.io 和 Node-Telegram-Bot-Api 结束 Mocha 测试

express,用于浏览器客户端和 node.js 客户端的 socket.io 服务器

让 socket.io、express 和 node-http2 通过 HTTP/2 进行通信

简单的游戏循环 Socket.io + Node.js + Express

使用node express generator配置socket.io