使用套接字发送给特定客户端

时间:2013-05-13 18:22:02

标签: javascript node.js websocket socket.io

我试图制作一个小小的派对系统只是为了练习套接字,我已经陷入困境,基本上我的方法就是这个派对系统只是

在页面加载时,请求输入用户名,使用新用户名填充所有客户端,这是一个具有用户名id的锚点,当点击锚点时,向特定客户端发送邀请他们参加聚会的请求。

我发现这个链接几乎已经到了这个部分,到目前为止我已经:

socket.on('adduser', function(username) {
  socket.username = username;
  socket.clientId = socket.id;
  usernames[username] = username;
  console.log(socket.id);
  socket.emit('updatechat', 'SERVER', 'You have connected.');
  io.sockets.emit('updateusers', usernames);
  console.log(usernames);
});

用于创建新用户 和

socket.on('updateusers', function(data) {
  var users = document.getElementById('users');
  users.innerHTML = '';
  for (var key in data) {
    var a = document.createElement('a');
        a.id = key;
        a.href='#';
        a.innerHTML = key;
    users.appendChild(a);
    users.appendChild(document.createElement('br'));
    document.getElementById(key).addEventListener('click', function() { 
      inviteUser.call(this); 
    });
  }
});

为客户端

我对如何将发射物发送给特定用户而不是每个人感到困惑,

通常我会socket.emit向请求任何内容的用户发送一个发射,但现在我需要发送给其他人

我在考虑将socket.id存储到对象中并将请求发送到与用户名匹配的id,但是如何将其发送到特定ID?

TL; DR :如何向特定socket.id发送一个发送内容,以便他们只能收到请求。

谢谢你们:)

1 个答案:

答案 0 :(得分:-1)

那么你必须抓住客户端,你可以采用简单的方法:

var io = io.listen(server);

io.clients[sessionID].send();

哪个可能会破坏,我几乎不怀疑它,但是io.clients总是有可能被改变,所以谨慎使用上面

或者您自己跟踪客户端,因此您将它们添加到连接侦听器中的自己的客户端对象中,并在断开连接侦听器中将其删除。