javascript - Node 和 Socket.IO - 私有(private)聊天(一对一)

标签 javascript node.js sockets express socket.io

我正在使用 Socket.IO 和 Express 创建聊天,以便能够一对一聊天(私有(private)聊天)。

主要问题是:我想向 socket.id 发送一条私有(private)消息,但我希望发送者收到与发送给接收者相同的消息。

module.exports = (io, socket) => {
  socket.on('send private message', async (msg) => {
    const emitterUser = // mongoose query to get the emitter
    const receiverUser = // mongoose query to get the receiver

    // sending to individual socketid (private message)
    socket.to(receiverUser.socketId).emit('receiver private message', msg); // <- sending to the receiver
    socket.emit('sender private message', msg);// <- sending to the sender
  });
}  

我想知道是否有更好的方法来创建私有(private)聊天,或者我是否走错了方向。

最佳答案

可以使用socket-io的GROUP函数 文档:https://socket.io/docs/server-api/

更新

io.on('connection', function(socket){
  console.log('people connect: ' + socket.id);

  // listen create and join room from client
  socket.on('create-room', function(nameroom){
    socket.join(nameroom); // if room not exists create and join to room, if room exists client will join to room
    console.log(nameroom);

    // get all name room
    var array=[];
    for(r in socket.adapter.rooms){
      array.push(r);
    }
    console.log(array);
  });

  // listen message from client
  socket.on('client-send-message', function(message){
    io.sockets.in('some-name-room').emit('key-chat', message);
  });
});

关于javascript - Node 和 Socket.IO - 私有(private)聊天(一对一),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51470731/

相关文章:

javascript - Node npm - 在前端引用 Three.js 模块

javascript - scrollTop 等于 0,即使 div 位于页面下方

node.js - 当使用来自不同本地主机端口的 GET api 时,本地主机上的 Angular 收到 404 - CORS 问题?

c# - 如何通过互联网向多个客户端发送音频/视频?

c# - 服务器为 Socket() 调用注册客户端 ID 两次

c++ - HPUX 上的套接字未收到完整数据

javascript - Parse.com 云错误请求 400

javascript - 使用 JavaScript 函数自动化网页

node.js - 将replaceStream的输出写入新文件

javascript - Nodejs Q Promise catch 从未用 Passport js 调用