如何在socket.io

时间:2016-06-17 11:47:33

标签: javascript node.js sockets socket.io

如果我有一个全局数组:

var users = new Array();

我想在所有客户中保持这个阵列:

socket.on('connect', function() {
    users.push(socket.id);
});

socket.on('disconnect', function() {
    users.splice(users.indexOf(socket.id), 1);
});

如果我有其他功能怎么办:

socket.on('new_score', function(s) {
    for (u in users) {
        ...
        do some processing
        ...

        io.sockets.connected[users[u]].emit('new_score', socket.id, s);

        ...
        do some processing
        ...
    }
});

由于socket.io是异步的,所以当我在最后一个函数中调用emit时,用户可能已经断开连接。

所以我需要一种安全访问数组的方法,所有这些其他函数异步操作它...

1 个答案:

答案 0 :(得分:1)

如果整个for循环是同步的(或者不依赖于异步函数的结果),则无需担心。

整个循环将以相同的“tick”处理,任何消息(如disconnect)将在刻度结束时处理。