2012-07-09 4 views
0

Quelqu'un pourrait me dire ce qui ne va pas avec mon code? J'essaie d'envoyer un message privé d'un utilisateur à un autre en utilisant socket.io. Je pense que le problème est quelque part avec la lignesocket.io Envoyer un message à un utilisateur particulier

io.sockets.socket(targetUser).emit('private message', tstamp(), socket.nickname, linkify(msg)); 

Le problème est que le message ne passe pas au client, ou du moins pas s'ajouté à la div. Je ne suis pas sûr de savoir comment résoudre exactement le problème.

Le code correspondant est ci-dessous - je peux ajouter le code entier si cela ne suffit pas ..:

Merci pour l'aide. J'apprends node.js et socket.io - mais c'est lent!

sur le client (envoyer):

function startPrivateChat(targetUser, sendingUser){ 
     if(targetUser !=sendingUser){ 
     var privateMessage1="starting private chat with " + targetUser + ". My name is " + sendingUser; 
     var chatBoxId= targetUser + 'ChatBox'; 
     $("#content").append('<div class="chatBox" id="' + chatBoxId + '">' + sendingUser + ', ' + targetUser + '</div>'); 
     $('#' + chatBoxId).append('new private chat'); 
     $('#' + chatBoxId).dialog(); 
     privateMessage(tstamp(), myNick, privateMessage1); 
     //socket.emit('private message', targetUser, privateMessage1); 
     clear();  
     } 
    } 

Serveur:

socket.on('private message', function(targetUser,msg) {   
    io.sockets.socket(targetUser).emit('private message', tstamp(), socket.nickname, linkify(msg)); 
    updateLog('private message', socket.nickname, msg); 
    }); 

sur le client (recieve):

socket.on('private message', privateMessage); 
function privateMessage (msg_time, from, msg) { 
     $('#chatLogDiv').append($('<p>').append($('<small>').text(msg_time)).append($('<b>').text(from), linkify(msg))); 
    } 
+0

Pourriez-vous ajouter le code complet, de préférence sur Pastebin – almypal

+0

chat_server.js [link] (http: //pastebin.com/nxHdzHDg) example_chat.tpl.php [link] (http://pastebin.com/t0h7rSFv) –

+0

Le code fonctionne correctement. Seule la modification apportée consistait à inclure la bibliothèque jquery et à exclure le code php qui appelle drupal_add_library et les méthodes drupal_add_js. – almypal

Répondre

0

J'ai eu ce travail!

sur Node.js-serveur:

socket.on("SendMessage", function (value) { 
     var userIdToRecieve = theOnlyUserToRecieveString; 
     io.sockets.emit("SendAMessage", socket.userId, value, userIdToRecieve); 
    }); 

Sur le client javascript côté:

socket.on("SendAMessage", function (userId, value, userIdToRecieve) { 
    // Write to the conversation window 

    if (userIdToRecieve == myLocalUserID) { 
     console.log("I shalleth recieve"); 
    } 

}); 
Questions connexes