enter code here
我正在创建一个nodejs应用程序...让我展示我的问题;;
//id = dinamic string.. "user1", "user2", "userX"
usersArray = [];
usersArray[id]["socket"] = socket;
当套接字结束时,我想从usersArray中删除[id] ..但此时id
不可用
socket.on('end', function () {
?........?
socket.end();
});
怎么做?
答案 0 :(得分:2)
socket.id
可以很好地作为每个套接字的标识符。然后,您可以使用关联数组而不是usersArray
:
var usersArray = {};
usersArray[socket.id] = some_user_data;
然后,您可以使用delete usersArray[socket.id]
删除此条目。
答案 1 :(得分:0)
假设您可以从socket.on('end')函数内部访问thisId,您可以执行以下操作:
socket.on('end', function () {
usersArray.splice(thisId, 1);
socket.end();
});
答案 2 :(得分:0)
根据您将套接字添加到userArray
的位置(这似乎是object
而不是array
注意到id
的示例),您可以考虑只需在将其添加到数组
usersArray[someId].socket = socket;
// New callback to just delete the usersArray entry
usersArray[someId].socket.on('end', function() {
delete usersArray[someId];
});
保持当前socket.on
不变:
socket.on('end', function () {
/* No new code here, as the deletion happens
when the socket is added to usersArray!
*/
socket.end();
});