2013-05-15 4 views
4

모든 클라이언트 연결에 대해 socket.io를 사용하는 모든 클라이언트 인스턴스에 일부 속성을 설정해야하는 채팅 앱을 만들고 있습니다. 속성을 저장할 때 다음을 사용합니다.socket.io에서 여러 소켓 속성을 얻는 방법은 무엇입니까?

client.set('name', name, function() {}); 
client.set('email', email, function() {}); 
.... 

잘 실행됩니다. 내가 모든 클라이언트 속성을 가져올해야하는 경우 , 난 이것보다 더 좋은 방법을 발견하지 않았습니다 :

client.get("name",function(err,name) { 
    client.get("email",function(err,email) { 
     ....... 
    } 
} 

내가 둥지에 필요한 모든 비동기 적으로 데이터를 가져 오기 위해 "수"; 하지만 10 가지 속성이 있다면 10 가지 항목을 모두 중첩시켜야합니까? 그것을 할 수있는 더 좋은 방법이 있어야합니다. 누군가 나를 도울 수 있습니까?

답변

2

소켓에 속성을 첨부하지 않습니다.

io.sockets.on('connection', function(socket) { 
    var username = "xx"; 
    var email = "xx"; 

    socket.on('doX', function(data) { 
    socket.emit('ackX', {username: username, email: email}); 
    }); 
}); 

가장 좋은 해결책인지는 모르겠지만 그와 같은 사례를 많이 보았습니다.

편집 : socket.io - getting more than one field for a socket? 간단한 설정에서

+2

, 당신이 솔루션은 잘 작동하지만은 .set '에 대한 이유는()'비동기되는 것은 데이터가 들어있는 저장 될 수 있다는 것입니다 귀하의 요구에 맞게 수 있습니다 정답 인스턴스, Redis 저장소에 저장되며 클러스터의 다른 'socket.io' 서버에서 검색됩니다. – robertklep

+0

@robertklep 감사합니다. 'require ('async'). parallel()'좋은 해결책인가? (내 링크에서). – Utopik

+0

예, 'async'는 여러 비동기 호출을 조정하는 훌륭한 모듈입니다. :) – robertklep

관련 문제