Получить идентификатор клиента отправителя сообщения в socket.io?

на стороне сервера я получил

socket.on('chat', function (data) {
    io.sockets.socket(data.clientid).emit('chat', {
        msg: data.msg,
        senderid : senderid
    });
});

Как я могу получить senderid без отправки отправителем своего клиента через сообщение?

Ответ 1

Оказывается, я могу просто использовать socket.id пользователя, отправляющего через msg, чтобы получить их clientid, например:

  socket.on('chat', function (data) {
      io.sockets.socket(data.clientid).emit('chat', {
          msg: data.msg,
          senderid : socket.id
      }); 
  });

Первоначально я думал, что могу просто получить clientid, выполнив:

  io.sockets.on('connection', function (socket) {
     clientid = socket.id;

Но clientid будет последним человеком, который подключился в этом случае, а не последним человеком, который отправил через чат

Ответ 2

Я бы предложил отправить имя пользователя (убедитесь, что оно уникально) и сохранить объект идентификаторов клиентов, связанных с именами пользователей в памяти.