javascript通知中心

时间:2016-01-09 16:32:14

标签: javascript node.js sockets

寻找一些智慧。场景如下。 在聊天系统中,我有一组连接的用户。当新访问者连接时,我想通知阵列中的第一个用户,如果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 
});

1 个答案:

答案 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 
});