我是node.js和socket.io的新手。我正在创建一个Web应用程序,其中将有数百个客户等待在产品中出价。
我们使用了jquery计时器,当此计时器变为零时,所有客户端都会向服务器发出拍卖关闭事件。
现在我需要的是只有一个(第一个)产品关闭事件被nodejs服务器(app.js)接受,其余的需要被丢弃。
//client requesting server to close the product
socket.emit('time_finished', {'id':id,'name':name,'time':time});
//and my server code (receive time finished event from client)
socket.on('time_finished',function(data) {
//performing product closing operation here
}
任何帮助都会非常值得注意。
答案 0 :(得分:1)
如果您只有一个产品,则可以在第一个事件到达后将布尔值设置为true。
var alreadySent = false;
socket.on('time_finished',function(data) {
if(!alreadySent){
alreadySent = true;
//performing product closing operation here
}
}
但如果您有许多产品,则可以将状态保存在数组或外部数据库中。
var alreadySentIds = [];
socket.on('time_finished',function(data) {
if(alreadySentIds.indexOf(data.productId) == -1){ // not existing
alreadySentIds.push(data.productId);
//performing product closing operation here
}
}