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 回答