我试着做一个小的聚会系统,只是为了练习插座,我遇到了一个障碍,基本上我对这个聚会系统的方法就是
在页面加载时,请求用户名,用新用户名填充所有客户端,这是一个锚与他们的用户名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);
});
}
});
客户端我只是对如何将emit发送给特定用户而不是每个人感到困惑,
通常我会socket.emit
发送一个emit给请求什么的用户,但现在我需要发送给其他人
我正在考虑存储一个套接字。id转换为对象,并将请求发送到与用户名匹配的id,但是如何发送到特定的id呢?
TL;DR:我如何发送一个发射到一个特定的socket.id
,这样只有他们得到请求。
谢谢大家:)
你必须抓住客户端,你可以用简单的方法:
var io = io.listen(server);
io.clients[sessionID].send();
它可能会破裂,我几乎不怀疑,但它总是有可能。客户端可能会被更改,所以要小心使用上面的
或者您自己跟踪客户端,因此您可以在连接侦听器中将它们添加到您自己的客户端对象中,并在断开侦听器中删除它们。