繁体   English   中英

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

[英]Emit to a specific client with Sockets

我正在尝试制作一个仅用于套接字练习的小型聚会系统,我遇到了麻烦,基本上,我用于该聚会系统的方法只是

在页面加载时,询问用户名,并使用新用户名填充所有客户端,该新用户名是其用户名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以便只有他们才能收到请求。

多谢你们 :)

好吧,您必须为此争取客户,您可以采用以下简单方法:

var io = io.listen(server);

io.clients[sessionID].send();

可能会中断,但我对此几乎没有怀疑,但是io.clients总是有可能被更改,因此请谨慎使用以上内容

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM