2012-07-09 210 views
0

有人能告诉我我的代码有什么问题吗?我试图从一个用户发送一个私人消息到另一个使用socket.io。我认为这个问题是与线socket.io发送消息给特定用户

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

的问题是,该消息没有得到通过向客户端,或者至少没有得到追加到div地方。我不知道如何解决问题的确切位置。

相关的代码如下 - 我可以添加整个代码,如果这还不够..:

感谢您的帮助。我正在学习node.js和socket.io - 虽然速度很慢!在客户端上

(发送):

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();  
     } 
    } 

服务器:

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

你能添加的完整代码,最好是在引擎收录 – almypal 2012-07-09 04:23:58

+0

chat_server.js [链接](HTTP: //pastebin.com/nxHdzHDg) example_chat.tpl.php [链接](http://pastebin.com/t0h7rSFv) – 2012-07-09 04:31:53

+0

代码运行良好。所做的修改是包含jquery库并排除调用drupal_add_library和drupal_add_js方法的php代码。 – almypal 2012-07-09 05:44:36

回答

0

我得到这个工作:

客户端(收到)上
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); 
    }); 

在的node.js服务器:

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

于JavaScript侧的客户端:

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

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

});