【发布时间】:2020-10-08 12:17:26
【问题描述】:
如果我有一个全局数组:
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 时,用户可能已在断开连接中被删除。
所以我需要一种方法来安全地访问数组,所有这些其他函数都可以异步操作它...
【问题讨论】:
-
这取决于“做一些处理”的实际含义。
-
即它做了一些需要一段时间才能完成的事情
-
这是否意味着处理是异步的?
-
不,它是标准的程序代码,尽管它确实会向客户端发出一些发射信号
-
但同样,您最终只会向连接的用户发送数据。
标签: javascript node.js sockets socket.io