2016-05-02 3 views
0

мне нужно удалить сокет с сервера после выполнения socket.disconnect()удалить сокет после отключения

users = {} 
ids_disconnect = [] 

io.of('/example') 
    .on('connection', function (socket) { 
     var user_id = socket.decoded_token.user; 


     if(users[user_id] === undefined){ 
      users[user_id] = {"socket": socket}; 
     } else { 
      ids_disconnect.push(users[user_id].socket.id); 
      users[user_id].socket.disconnect(true); 
      users[user_id] = {"socket": socket}; 
     } 

     console.log("User Connect: " + user_id + " SocketID: " + socket.id); 



     //disconnect client 
     socket.on('disconnect', function() { 
      console.log('User Disconnect ' + user_id); 
      if(ids_disconnect.indexOf(socket.id) != -1){ 
       console.log('Disconnect Force: ' + user_id); 
       ids_disconnect.splice(ids_disconnect.indexOf(socket.id),1) 
      } else { 
       delete users[user_id]; 
      } 
     }); 
    }); 

};

этот мой код, но разъем не удаляется с сервера.

извините за мой английский

ответ

0

Вы должны слушать disconnect события перед запуском его.

users = {} 
 
ids_disconnect = [] 
 

 
io.of('/example') 
 
    .on('connection', function(socket) { 
 
    var user_id = socket.decoded_token.user; 
 
    //disconnect client 
 
    socket.on('disconnect', function() { 
 
     console.log('User Disconnect ' + user_id); 
 
     if (ids_disconnect.indexOf(socket.id) != -1) { 
 
     console.log('Disconnect Force: ' + user_id); 
 
     ids_disconnect.splice(ids_disconnect.indexOf(socket.id), 1) 
 
     } else { 
 
     delete users[user_id]; 
 
     } 
 
    }); 
 

 
    if (users[user_id] === undefined) { 
 
     users[user_id] = { 
 
     "socket": socket 
 
     }; 
 
    } else { 
 
     ids_disconnect.push(users[user_id].socket.id); 
 
     users[user_id].socket.disconnect(true); 
 
     users[user_id] = { 
 
     "socket": socket 
 
     }; 
 
    } 
 

 
    console.log("User Connect: " + user_id + " SocketID: " + socket.id); 
 
    }); 
 
};

Смежные вопросы