2011-10-31 2 views
8

node.js와 socket.io를 사용하여 채팅 응용 프로그램을 만듭니다. 다른 소켓으로 메시지를 보내는 방법은 소켓의 ID 나 사용자 이름 만 알고 있습니다. 방이 없으며 고객이 하나씩 채팅합니다.고유 소켓에 메시지 보내기

답변

21

Socket.IO를 사용하면 연결 함수의 콜백 내에서 소켓 객체 만 사용하는 것으로 제한되지 않습니다. 특정 사용자 이름에 대한 소켓 객체를 저장하는 객체를 생성하고 클라이언트가 메시지를 보낼 때 소켓을 검색하여 메시지를 보낼 수 있습니다. 모든 메시지와 함께 원하는 대상을 전송해야합니다.

예 :

var sockets = {}; 

... 

io.on('connection', function(socket){ 
    socket.on('set nickname', function (name) { 
     sockets[name] = socket; 
    }); 
    socket.on('send message', function (message, to) { 
     sockets[to].emit(message); 
    }); 
}); 

examples page of Socket.IO's website에 더 많은 예제를 참조하십시오.

+0

큰, 즉 솔루션 –

+0

어떻게 어떤 별명에 속하지 않는있다 "를"처리하는? 예를 들어; 닉네임 "A"는 닉네임 "B"에 msg를 보내고, 닉네임 "B"는 닉네임 "C"에 msg를 보냅니다. 그리고 별명 "C"가 없습니다. 그런 다음 오류 = "속성을 읽을 수 없습니다 '정의되지 않은" – drojokef

0

당신은이 같은 모든 소켓의 이름 속성을 확인할 수 있습니다

socket.on('send message', function(message,to){ 

    io.sockets.clients().forEach(function (socket) { 

     if (socket.username==to){socket.emit(message);} 

    }); 

});