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

ソケットをどこに追加するかに応じてuserArray(これは、の例に気付くのobjectではなく、そうであるように思われます)、配列に追加するときにソケットに新しいコールバックを追加することを検討できます。arrayid

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 に答える