【发布时间】:2015-10-28 23:41:15
【问题描述】:
假设我有一个名为“add”的 socket.io 事件,它接受 0 个参数,当在服务器端接收到时,增加一个计数变量,然后将新的计数值发送给每个客户端。如何阻止人们从本质上打开 JS 控制台并使用如下循环:
for(var i = 0; i < 1000; i++) {
socket.emit('add');
}
另一个可能更有意义的场景是:我如何检测聊天应用程序中的泛滥?
我完全理解,没有什么可以真正确保客户端代码不被用户操纵。
如何为每个客户端的每个 socketio 事件处理程序添加某种形式的超时?
【问题讨论】:
-
@Xodrow 我已经看到了,这是为了限制发送到服务器的实际数据。我认为这根本不是超时。这是一个 mb/s 油门。我正在寻找某种形式的套接字发出事件处理程序,它检查来自同一个套接字的每个先前事件的先前时间。
-
为什么不使用
lasttime = Date.now()扩充客户端并检查lasttime - Date.now() > fixedtimeout是否存在? -
@Anonymous0day 实际上我最终使用了一个键 val 数组来存储客户端地址以及之前的消息时间,然后检查时间之间的差异是否小于 100 毫秒。将此作为答案提交,我会选择它。
标签: javascript node.js socket.io