我想在我的 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));
现在我该怎么办?
您可以首先使用此设置 io 在所有文件中是可评估的:
app.set('io', io);
然后你可以在任何可以访问应用程序对象的地方使用它。
const io = app.get('io');
对于控制器,您可以制作如下所示的中间件:
app.use(function(request, response, next) {
request.io = io;
next();
});