0

そのため、私が今行っていることは、新しい接続が受信されたときに新しいクライアント オブジェクトを作成し、それらを自己管理オブジェクト内に格納することです。ユーザーの切断時に、オブジェクトを削除しています。これは、それがどのように見えるかの基礎です:

var socketobj = {};

io.sockets.on('connection', function(socket){
    socketobj[socket.id] = socket;

    socket.on('disconnect', function(data){
        delete socketobj[socket.id];
    });
});

これらの各クライアント オブジェクトを使用して、関連するユーザー名などの追加情報を次の形式で保存しています。socketobj[socket.id].user = username;

私が抱えている問題は、コードの別の部分が実行され、サーバーがクライアント オブジェクトにアクセスする直前にクライアントが切断された場合、(オブジェクトが削除されたばかりであるため) 未定義として表示されることです。例外をスローします。

どうすればこれを防ぐことができますか? 少なくとも、エラーがスローされるたびにサーバーがクラッシュしないようにするにはどうすればよいですか?

4

1 に答える 1

-2

わかりました、マルチスレッドではなくイベントベースだとは知りませんでした。ここに新しい答えがあります。

アクセスする前に、エントリが存在するかどうかを確認してください。そうでない場合は、削除されただけであり、必要に応じて何も/別のことを行うことができます.

于 2013-01-24T02:16:33.947 に答える