【问题标题】:NodeJS Socket.io private message code not workingNodeJS Socket.io私人消息代码不起作用
【发布时间】:2014-03-25 13:13:12
【问题描述】:

我正在尝试开发一个能够发送私人消息的聊天应用程序。我已经被困了一个多星期了。私人消息部分无法正常工作。

当用户想要发送私人消息时,这是我的代码: 它基本上检查用户是否在线,以及是否从用户字典中获取该用户的套接字。并将其广播给该用户以及自己发送它的用户。

socket.on('send message', function(data, callback){
var msg = data.trim();

var name = req.params.posteruname;

  if(name in users){
   users[name].emit('new message', {msg: msg, nick: socket.nickname});
   users[req.user.username].emit('new message', {msg: msg, nick: socket.nickname});
} 
else{
   callback('Error!  Enter a valid user.');
}


 });

这是客户端代码:

 socket.on('new message', function(data){
 if(data.nick == "{{reciever}}" || data.nick == "{{user.username}}") {
displayMsg(data);
}
  });

它基本上会再次检查它是广播给接收者还是发送者。

这是新用户加入时的代码:

    socket.on('new user', function(data, callback){
       if (data in users){
          callback(false);
       } else{
      console.log(users);
      callback(true);
      socket.nickname = req.user.username;
      users[socket.nickname] = socket;
      updateNicknames();
      console.log(users);
    }
  });

  function updateNicknames(){
    io.sockets.emit('usernames', Object.keys(users));
  }

每次我尝试发送消息时,它都不会显示在发件人的屏幕上,而是在收件人的屏幕上显示两次。当第三个用户连接时,发送消息只会在第三个用户的屏幕上广播,即使它应该在 user1 和 user2 之间。

【问题讨论】:

    标签: node.js mongodb sockets mongoose chat


    【解决方案1】:

    您好我们这个代码服务器端: var socketConnections={};

    socket.on('userID',function(data)
    {
       socket.userID=data.userID;
       socketConnections[socket.userID];
    
    });
    socket.on('sendMessage',function(data){
    
             socketConnection[data.receiverID].emit('message',{message:data.message,senderID:socket.userID});
     }); 
    

    客户端代码

    socket.emit('userID',{userID:'anyUniqueID'});
    
    socket.emit('sendMessage',{message:'hi this murugan',receiverID:'uniqueReceiverID'});
    
    socket.on('message',function(data){
    //Private message     
    console.log(data.message);
    

    });

    【讨论】:

    • 我试过了,还是不行。我只是想知道,它与我所拥有的有什么不同?
    • 我贴出来了。现在检查问题。
    • 客户端必须发出一些正确的唯一ID 请添加socket.emit('new user',{uniqueid});在客户端
    猜你喜欢
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 2020-09-10
    • 1970-01-01
    • 2014-10-27
    相关资源
    最近更新 更多