如何在node js的多个路由中使用socket.io

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

我想在我的 MERN 应用程序中发送实时通知。我正在为此使用 socket.io。我感到困惑的是,如果我想在多条路线上使用它,我应该在哪里初始化我的 socket.io。我该如何使用它。

每次发生某个事件时,我都想通过一条发布路线通知用户,并且有多个这样的发布路线。所以我的问题是我应该在哪里初始化我的 socket.io 以供多次使用以及我应该如何使用它。 请给我它的代码,并为我说清楚。

目前,在我的服务器与我的数据库连接后,我正在初始化我的 socket.io

mongoose
  .connect(process.env.MongoDb_Url)
  .then(() => {
    const io = socket(
      app.listen(5000, () => console.log("Server And Database Are Running")),
      {
        cors: {
          origin: "http://localhost:3000",
        },
      }
    );
    io.on("connection", (socket) => {
      socket.on("message", async (message) => {
        const messageCreated = await chatModel.create({ ...message });
        socket.emit("createdMessage", messageCreated);
      });
    });
  })
  .catch((error) => console.log(error.message));

现在我该怎么办?

node.js websocket socket.io notifications real-time
1个回答
0
投票

您可以首先使用此设置 io 在所有文件中是可评估的:

app.set('io', io);

然后你可以在任何可以访问应用程序对象的地方使用它。

const io = app.get('io');

对于控制器,您可以制作如下所示的中间件:

app.use(function(request, response, next) {
    request.io = io;
    next();
});
© www.soinside.com 2019 - 2024. All rights reserved.