gpt4 book ai didi

javascript - 管理socket.io中的用户

转载 作者:行者123 更新时间:2023-12-03 01:56:06 26 4
gpt4 key购买 nike

我正在尝试管理登录我的应用程序的每个用户的位置/顺序。我创建了一个数组,每次有人进入时都会更新该数组。到目前为止,一切正常。

[...]
var row_of_users=[];//my array of users.
var visits=0;//just a count of users logged in.

io.on('connection', function(socket){
var user=socket.id;
visits++;
row_of_users.push(user);
console.log(row_of_users);
[...]

在console.log中显示:

[ 'BnUtfcyNniEWNwN3AAAA', 'IkE3l4oMBXt5dEsOAAB', 't5gzbSru7oDR44T7AAAC', 'yB2X4G55YqcvDgHcAAAD']

但是当用户离开时,socket.io 会忽略 user.id 并删除数组中的最后一个对象。

socket.on('disconnect', function(){
visits--;
row_of_users.pop(user);
});

如果我关闭浏览器中的第一个用户选项卡 (**BnUtfcyNniEWNwN3AAAA),控制台日志中现在会显示以下内容:**

[ 'BnUtfcyNniEWNwN3AAAA', 'IkE3l4oMBXt5dEsOAAB', 't5gzbSru7oDR44T7AAAC']

就像最后一个用户断开连接一样。

这里发生了什么?我怎样才能正确更新数组?我没有发布整个代码,因为我的语言是葡萄牙语,变量也是葡萄牙语。

最佳答案

array.pop() 不接受任何参数,并且始终弹出最后一个元素。

From MDN:

The pop() method removes the last element from an array and returns that element.

要删除第 N 个元素,请使用:

array.splice(N, 1)

或者根据您的情况:

row_of_users.splice(row_of_users.indexOf(user), 1)

关于javascript - 管理socket.io中的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50222825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com