【发布时间】:2019-06-25 19:59:43
【问题描述】:
我正在研究 nodejs 和 angularjs。我正在使用 socket.io 来显示正在进行的进程的进度。
在客户端
let socket = io.connect();
socket.emit('room',{roomId:user_id});
socket.on('data',function(data){
console.log("data -=- ",data);
})
在服务器端
io.on('connection',function(socket){
socket.on('disconnect', function(de) {
console.log("disconnected",de)
});
socket.on('room',function(d){
socket.join(d.roomId);
})
})
app.use(function(req,res,next){
req.io = io; next();
});
我在正文中发送带有我的帖子请求的 roomId;当调用 api 时,我从 req.body 收集 roomId,然后发出事件。
req.io.sockets.in(roomId).emit('data',{roomId:roomId,msg:'message'});
当我在本地主机上为单个用户运行它时,它工作正常。但是,当我调用为两个具有不同 roomId 的独立用户发出事件的 api 时。最先请求的用户一无所获。
如果 roomId = 1 的 user1 刚好在 roomId = 2 的 user2 之前连接,则 user1 不会收到“数据”事件。只有 user2 正在接收它。
我找不到任何解决方案。我在这里做错了什么?请帮忙。
【问题讨论】:
标签: node.js angularjs socket.io