node.js - Socket.io 私密消息,多用户同时在线

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

所以我正在构建一个聊天应用程序,需要帮助弄清楚如何发送私有(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/

相关文章:

node.js - 错误 : Please install mysql2 package manually

javascript - Nightwatch.js 通过配置文件设置测试环境

mongodb - 将字符串附加到 MongoDB 中现有字段的末尾

sockets - 在sails v0.11(客户端)中发出消息

angular - 在 Angular 2 应用程序中导入 socket.io-client 时出错

node.js - Node 错误: Cannot find module - typescript api for custom module where I export mongoose schemas and interfaces

node.js - 如何在 nodejs 中以编程方式删除 Rabbitmq 中的队列?

node.js - Mongodb toArray() 性能

MongoDB 更改流事件 : replace vs update?

javascript - 当 node.js 部署到 Google App Engine 时,socket.io 连接失败