这是事后路线。当用户发布事件时,该事件应发送给其所有关注者! 我为此保留了Follower数组。
如何使用Socket.io ????
module.exports.postEvent = (req,res) => {
Events.saveEvent(req.body , (err,saveEvent)=>{
var response = {
status : 500,
message : err
};
var id = req.userId;
if(err){
res.status(response.status)
.json(response.message);
}else {
// find the data of user from token and
user.getuserbyname(id ,(err,user)=>{
if(err){
res.status(response.status)
.json(response.message);
}else{
// send to all user subscribers via socket.io
async.each(user.followers ,(id , callback)=>{
what will be the code here???
})
}
})
}
})
};
答案 0 :(得分:0)
在设置io
服务器时附加io instance to your app。
app.io = io;
然后可以通过请求对象
获取router.post('/event', function(req, res){
req.app.io.emit('message', data)
})
每个套接字连接都有Socket#id
标识的"Default Room"。
您可以通过以下方式发送到请求处理程序中的那个房间:
req.app.io.to(socket_id).emit('my message', msg)
或者通过套接字io处理程序中的套接字:
socket.broadcast.to(socket_id).emit('my message', msg)
SocketIO还提供了Rooms的概念。您可以将套接字join
和leave
作为一个房间,然后发送到该房间,而不是管理自己的订阅数组。
io.on('connection', function(socket){
socket.join(`room:${user}`)
})
io.to(`room:${user}`).emit('my message', msg)