1

enter code here我正在制作一个 nodejs 应用程序......让我展示我的问题;;

//id = dinamic string.. "user1", "user2", "userX"  
usersArray = [];
usersArray[id]["socket"] = socket;

当套接字结束时,我想从 usersArray 中删除 [id] .. 但此时id不可用

socket.on('end', function () {
    ?........?
    socket.end();
});

怎么做?

4

3 回答 3

2

socket.id哪些可以很好地作为每个套接字的标识符。然后,您可以使用关联数组代替usersArray

var usersArray = {};
usersArray[socket.id] = some_user_data;

然后,您可以使用 删除此条目delete usersArray[socket.id]

于 2013-05-08T17:51:51.837 回答
0

假设您可以从 socket.on('end') 函数内部访问 thisId,您可以执行以下操作:

socket.on('end', function () {
    usersArray.splice(thisId, 1);
    socket.end();
});
于 2013-05-08T17:53:10.437 回答
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();
});
于 2013-05-08T17:54:14.750 回答