2014-01-31 4 views
0

socket.io에서 연결 수를 얻는 방법이 있습니까?socket.io를 사용하여 소켓 연결 수를 얻는 방법

나는 내가 socket.broadcast을 한 경우에 "지금 연결 X 사용자는"

는 기본적으로 나는에 가서 얼마나 많은 연결을 계산하려는 말한다 내 사이트에 메시지를 표시합니다.

답변

0

당신은 모든 클라이언트의 소켓 인스턴스를 반환()

io.sockets.clients().length 

는 기본적으로 io.sockets.clients 사용할 수 있습니다. 당신이 방을 사용하는 경우는 특정 방에

+0

동일한 사용자가 여러 이벤트에 대해 서로 다른 연결을 설정하는 경우 클라이언트는 여전히 해당 사용자에 대해 1입니까? – chovy

+0

앞에서 설명한 내용은 연결된 소켓 수를 반환합니다. 따라서 브라우저에서 5 개의 탭을 열면 5가 반환됩니다. 서버는 ID로 소켓을 유지합니다. 단일 사용자로 계산하려면 IP 주소가 –

+0

인 사용자 수를 세는 것과 같은 방법을 사용하는 것이 좋습니다. 세션 당 단 하나의 소켓이 있는지 확실하지 않았습니다. – chovy

0
Using this code Server site 



var noOfUser=[]; 
     socket.on('someEventFromClient',function(data){ 
       //User name must unique 
       socket.username=data.username; 
       noOfUser.push(data.username); 
//Now you can emit no of user to client are any where 
             console.log('NO of user:'+noOfUser.length); 
       }); 

      socket.on('disconnect',function(){ 
         for(var i=0;i<noOfUser;i++) 
          { 
             if(noOfUser[i]==socket.username) 
              { 
               noOfUser.splice(i,1); 
               } 
              //Now you can emit no of user to client are any where 
             console.log('NO of user:'+noOfUser.length); 
            } 
      }); 

클라이언트 측 모든 클라이언트의 소켓 인스턴스를 반환하기 때문에 당신은 더 나은

io.sockets.clients('room').length 

를 사용한다 : 사용자가 연결할 때 소켓 서버가이 이벤트를 방출을 socket.emit ('someEventFromCLient', {username : 'someuniqueID'});

관련 문제