2017-12-13 1 views
0

나는 간단한 채팅을 만드는 중이라서와 현재의 클라이언트 목록을 가져옵니다 Edge를 통해 "Ted"로 로그인하면 "Ted"로그인시 "Ted"가 표시되고 Chrome과 채팅하고 있습니다.누군가가 로그온 할 때 내가 이것을 가지고, 사용자 이름

로그인하는 즉시 사용자 이름으로 현재 클라이언트 목록을 얻으려면 어떻게해야합니까?

그래서 "Ted"가 이미 있고 다른 브라우저에서 "Bob"으로 로그인하면 목록에서 "Ted"를보고 싶습니다.

내가 생각할 수있는 유일한 방법이지만 데이터베이스를 사용하지 않기를 원하는 유일한 방법이기 때문에 데이터베이스를 사용하지 않고 로그인하는 각 사용자를 저장할 수 있습니까?

답변

0

데이터베이스를 사용할 필요가 없습니다. 당신이 가지고 있어야하는 유일한 것은 특정 이벤트 리스너 서버 측에 연결된 사용자 배열입니다. 예 :

var users = []; // Array of users online 
io.on('connection', function(socket) { 
    var user = { // On connection, create an object for the user. 
     socket: socket, 
     username: null 
    } 

    socket.on("login",function(data) { // When the user logs in, set his username and add him to the users array. 
     user.username = data.username; 
     users.push(user); 
    }); 

    socket.on("disconnect",function() { // When user disconnects, remove the object from the array. 
    var index = users.indexOf(user); 
    if (index !== -1) users.splice(index); 
    }); 
}); 

이제 알 수 있듯이 액세스 할 수있는 모든 온라인 사용자의 배열이 있습니다.

관련 문제