2014-02-24 3 views
1

비공개 메시지를 보낼 수있는 채팅 앱을 개발하고 있습니다. 나는 일주일 이상 붙어있다. 비공개 메시지 부분이 올바르게 작동하지 않습니다.NodeJS Socket.io 비공개 메시지 코드가 작동하지 않습니다.

다음은 사용자가 비공개 메시지를 보내려 할 때 사용하는 코드입니다. 기본적으로 사용자가 온라인 상태인지 여부 및 사용자 dict에서 해당 사용자의 소켓을 가져 오는 지 여부를 확인합니다. 그 사용자와 그 사용자에게 직접 브로드 캐스트합니다. 이 수신기 또는 송신기 중 어느 하나에 방송되는 경우 기본적으로 다시 확인

socket.on('new message', function(data){ 
if(data.nick == "{{reciever}}" || data.nick == "{{user.username}}") { 
displayMsg(data); 
} 
    }); 

: 여기

socket.on('send message', function(data, callback){ 
var msg = data.trim(); 

var name = req.params.posteruname; 

    if(name in users){ 
    users[name].emit('new message', {msg: msg, nick: socket.nickname}); 
    users[req.user.username].emit('new message', {msg: msg, nick: socket.nickname}); 
} 
else{ 
    callback('Error! Enter a valid user.'); 
} 


}); 

클라이언트 측 코드이다. 여기

는 새로운 사용자가 가입 할 때 코드입니다 :

socket.on('new user', function(data, callback){ 
     if (data in users){ 
      callback(false); 
     } else{ 
     console.log(users); 
     callback(true); 
     socket.nickname = req.user.username; 
     users[socket.nickname] = socket; 
     updateNicknames(); 
     console.log(users); 
    } 
    }); 

    function updateNicknames(){ 
    io.sockets.emit('usernames', Object.keys(users)); 
    } 

내가 메시지를 보내려고 할 때마다, 그것은 보낸 사람의 화면에 표시되지 않습니다와 수신기의 화면에 그렇게 두 번한다. 세 번째 사용자가 연결하면 메시지는 user1과 user2 사이에 있다고해도 세 번째 사용자의 화면에서만 브로드 캐스트됩니다.

답변

0

안녕하세요,이 코드는 서버 쪽입니다 : var socketConnections = {};

socket.on('userID',function(data) 
{ 
    socket.userID=data.userID; 
    socketConnections[socket.userID]; 

}); 
socket.on('sendMessage',function(data){ 

     socketConnection[data.receiverID].emit('message',{message:data.message,senderID:socket.userID}); 
}); 

클라이언트 측 코드

socket.emit('userID',{userID:'anyUniqueID'}); 

socket.emit('sendMessage',{message:'hi this murugan',receiverID:'uniqueReceiverID'}); 

socket.on('message',function(data){ 
//Private message  
console.log(data.message); 

});

+0

시도해 보았지만 작동하지 않습니다. 나는 궁금해하고 있는데, 내가 가지고있는 것과는 다른 점이 무엇일까요? – blehadfas1

+0

클라이언트 및 서버 측 코드 게시 –

+0

게시했습니다. 지금 질문을 확인하십시오. – blehadfas1

관련 문제