寻找一些智慧。场景如下。 在聊天系统中,我有一组连接的用户。当新访问者连接时,我想通知阵列中的第一个用户,如果1分钟后没有应答,则移动通知第二个用户,依此类推。如果没有用户回答请求,我想循环回到数组的顶部。如果10分钟后没有回答,请终止通知循环。谢谢,
以下是一些相关的代码。
socket.on('new_visitor', function (newVisitorData) {
for (var i = 0; i < users.length; i++) {
users[i][_id].emit('send_chat_request', newVisitorData, function(data){
// the notification was sent
});
});
});
socket.on('answered_request', function(data){
//stop the notification loop
});
答案 0 :(得分:0)
您可以尝试这样的代码(我无法对其进行测试,希望没有错误,这是您正在寻找的逻辑):
function checkActiveUser(i, newVisitorData) {
users[i][_id].emit('send_chat_request', newVisitorData, function(data){
clearInterval(clr);
clearTimeout(clr10);
// the notification was sent
});
}
var countUser;
var clr;
var clr10;
socket.on('new_visitor', function (newVisitorData) {
clearTimeout(clr10);
countUser = 0;
checkActiveUser(countUser, newVisitorData); // first check
clr = setInterval(function(){
countUser++;
if (countUser==users.length) countUser=0;
checkActiveUser(countUser, newVisitorData);
}, 60000); // 1min
clr10 = setTimeout(function(){
clearInterval(clr);
clearTimeout(clr10);
}, 600000); // 10min
});
socket.on('answered_request', function(data){
clearInterval(clr);
clearTimeout(clr10);
//stop the notification loop
});