websocket 如何socket.io在node js中多路由使用www.example.com

lrl1mhuk  于 2023-02-23  发布在  其他
关注(0)|答案(1)|浏览(158)

我想在我的MERN应用程序中发送真实的通知。我正在使用socket.io。我感到困惑的是,如果我想在多条路线上使用socket.io,我应该在哪里初始化它?以及我如何使用它。
每次发生某个事件,我都想通过一个发布路径通知用户,这样的发布路径有很多,所以我的问题是,我的www.example.com应该在哪里初始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));

现在我该怎么办?

voase2hg

voase2hg1#

您可以首先使用以下命令将io设置为可在所有文件中评估:

app.set('io', io);

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

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

对于控制器,你可以做一个中间件如下:

app.use(function(request, response, next) {
    request.io = io;
    next();
});

相关问题