javascript - 如何使用 socket.io 判断哪个套接字连接单击了按钮?

标签 javascript jquery sockets socket.io

如果页面上有一个按钮,并且您想确保在另一个套接字单击其按钮之前无法再次单击该按钮。

如果套接字 a 单击了,我应该禁用该按钮,直到另一个套接字发送一条消息表明他们单击了按钮,然后返回第四个。

$(".buttonTurns").on("click", function(){
        socket.emit("turnbutton click")
})

并且他们在连接时不输入任何名称

最佳答案

每个socket.io session 都会自动分配一个唯一的字符串作为id。在服务器上,您可以从以下位置获取它:

socket.id

如果您处于 session 内部(即返回套接字对象的连接),您只需执行以下操作即可将消息发送回客户端:

socket.emit('event name',data);

但是如果您想向不同的 session 发送消息,那么您需要执行以下操作:

io.sockets.socket(socket_id).emit('event name',data);

如果您想向所有连接的 session 发送消息,则只需执行以下操作:

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';
    })
})

现在您可以管理服务器上每个单独客户端的单独状态,您可以使用它与其他客户端进行通信。

关于javascript - 如何使用 socket.io 判断哪个套接字连接单击了按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31911606/

相关文章:

javascript - 根据单选按钮选择切换子类别 div

jquery - AJAX(或 AJAX-esque)文件下载

javascript - 我如何像 iPhone 一样在我的 HTML 文本输入框中放置一个清除按钮?

javascript - 警报后功能不工作

javascript - 单击时将变量设置为等于此值

.net - Socket.BeginConnect 与 Socket.Connect

c# - 无法从 Internet Explorer 连接套接字服务器

javascript - 显示剩余内容 - DIV 溢出 : hidden

javascript - 不同状态的 mustache 模板

sockets - 多个send()方法调用和1个receive方法。这正常吗?