所以我正在构建一个聊天应用程序,需要帮助弄清楚如何发送私有(private)消息。这是我“发送消息”的代码。
users = {}
socket.on('send message', function(data, callback){
var msg = data.trim();
console.log(users);
console.log('after trimming message is: ' + msg);
var name = req.params.posteruname;//reciever
var msg = msg;
if(name in users){
var message = new Chat({
msg : msg,
sender : req.user.username,
reciever : name
}).save(function(err, savedMessage){
if(err) {
users[name].emit('whisper', {msg: "Error, some tried sending you a message but something went wrong", nick: socket.nickname});
} else {
users[name].emit('whisper', {
reciever: name,
sender:req.user.username,
msg:msg
});
}
});
} else{
callback("Something went wrong");
}
});
这段代码运行得不太好。当我尝试发送消息时,它仍然显示给所有用户。
最佳答案
看看这个 document 。您应该指定房间。每个房间都是一个“房间”,当您发送一条指定了事件和房间的消息时,正确的用户将收到它。
您的users
对象只是一个普通对象,不反射(reflect)我在说什么。
关于node.js - Socket.io 私密消息,多用户同时在线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21840292/