[英]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.