Socket.io私人消息,同时有多个用户在线

时间:2014-02-17 22:10:50

标签: node.js mongodb socket.io chat real-time

所以我正在构建一个聊天应用程序,需要帮助找出如何发送私人消息。这是我发送的“发送消息”的代码。

    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");
    }


    });

此代码效果不佳。当我尝试发送消息时,它仍会显示给所有用户。

1 个答案:

答案 0 :(得分:0)

看看这个document。你应该指定房间。每个人都将成为“房间”,当您发送带有事件和房间的消息时,正确的用户将收到该消息。

你的users对象只是一个普通的对象,不反映我在说什么。