如果页面上有一个按钮,并且您希望确保在另一个套接字点击其按钮之前无法再次单击该按钮。
如果套接字a单击我应该禁用该按钮,直到另一个套接字发送消息,他们点击了他们的按钮,然后返回第四个。
$(".buttonTurns").on("click", function(){
socket.emit("turnbutton click")
})
他们在连接时不输入任何名字
答案 0 :(得分:0)
您可以为每个客户端设置UUID(客户端javascript或服务器端javascript)。
对于服务器端解决方案:
正如@slebetman在评论中提到的,socket.io为每个套接字都有一个内置的唯一标识符。
正如@slebetman在他的回答中建议的那样,获取套接字的唯一ID()可以查看他的答案以获取更多详细信息):
// v0.6.x
var sid = socket.sessionId;
// v0.7.x
var sid = socket.id;
对于客户端解决方案:
如果您在客户端设置唯一ID,则可能需要创建自己的唯一ID。
我从6转获得了以下代码,Briguy37回答了a question here on this site:
function generateUUID(){
var d = new Date().getTime();
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = (d + Math.random()*16)%16 | 0;
d = Math.floor(d/16);
return (c=='x' ? r : (r&0x3|0x8)).toString(16);
});
return uuid;
};
随机性应足够强大,以便所有客户端都可以使用此ID生成器获得唯一标识符。这应该与您想要使用的有关your question here的代码一起使用。
答案 1 :(得分:0)
每个socket.io会话都会自动分配一个唯一的字符串作为id。在服务器上,您可以从以下位置获取:
socket.id
如果您在会话中(即返回套接字对象的连接),您只需执行以下操作即可将消息发送回客户端:
socket.emit('event name',data);
但是如果你想向另一个会话发送消息,那么你需要这样做:
io.sockets.socket(socket_id).emit('event name',data);
如果您想向所有已连接的会话发送消息,请执行以下操作:
io.emit('event name', data); // broadcast
如果您的应用程序具有需要管理的状态,那么一种技术是使用套接字ID作为密钥将它们存储在对象中:
var buttonState = {}
io.on('connection',function('socket'){
// default button to off when socket connects:
bottonState[socket.id] = 'off';
socket.on('on button',function(){
bottonState[socket.id] = 'on';
})
socket.on('off button',function(){
bottonState[socket.id] = 'off';
})
})
既然您可以管理服务器上每个客户端的个别状态,您可以使用它来与其他客户端进行通信。