Я пытаюсь вызвать мой Socket.io
интерфейс из другого файла с express
маршрутами.Допустим, я хочу создать следующий групповой чат с этим и затем отправить уведомление вовлеченным пользователям в групповом чате:
rout.js
router.post(
"/save-groupchat",
passport.authenticate("jwt", { session: false }),
(req, res) => {
new GroupChat({
creator: req.user._id,
groupName: req.body.groupName,
groupMembers: userList
})
.save()
.then(newGroup => {
GroupChat.findOne(newGroup)
.populate("groupMembers.user")
.then(groupChat => {
//Notify the user's as well
userList.map((user, key) => {
NotificationCenter.findOneAndUpdate(
{ owner: user.user },
{
$push: {
notifications: {
$each: [
{
type: "group-invite",
title:
"You have been invited to " +
req.body.groupName +
" by " +
req.user.name,
notificationTriggeredBy: req.user._id
}
],
$position: 0
}
}
}
)
.then(() => {
//How do I call the socket here <---------------------------------
console.log("Notified User: " + req.body.userList[key].name);
})
.catch(err => {
console.log(
"Error when inviting: " +
req.body.userList[key].name +
"\n " +
err
);
});
});
res.json(groupChat);
});
});
}
);
. / Microservice / chat /chat (Socket Interface)
И тогда мой сокет интерфейс выглядит следующим образом:
let user_list = {};
io.sockets.on("connection", socket => {
socket.on("send-notification", notification => {
console.log("How do I get here from the other file?");
});
})
...
Вот как у меня есть server.js
файл
var http = require("http").Server(app);
var io = require("socket.io")(http);
ChatMicroservice = require("./microservice/chat/chat")(io);
Как быЯ получаю доступ к интерфейсу сокетов и использую user_list
сокетов для отправки уведомлений?