【问题标题】:socket.io Send message to particular usersocket.io 向特定用户发送消息
【发布时间】:2012-07-08 11:49:00
【问题描述】:

谁能告诉我我的代码有什么问题?我正在尝试使用 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', function(targetUser,msg) {        
    io.sockets.socket(targetUser).emit('private message', tstamp(), socket.nickname, linkify(msg));
    updateLog('private message', socket.nickname, msg);
   });

在客户端(接收):

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

【问题讨论】:

  • 能否添加完整的代码,最好在 Pastebin 上
  • chat_server.js linkexample_chat.tpl.php link
  • 代码运行良好。唯一的修改是包含 jquery 库并排除调用 drupal_add_library 和 drupal_add_js 方法的 php 代码。
  • 仍然无法正常工作。 jquery 库已经包含在内,我注释掉了你提到的两行(虽然我需要它们),但在接收客户端上我仍然看不到任何东西

标签: node.js socket.io private-messaging


【解决方案1】:

我搞定了!

在 node.js-server 上:

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

});

【讨论】:

    猜你喜欢
    • 2021-04-10
    • 2014-08-14
    • 1970-01-01
    • 2012-05-24
    • 2015-08-06
    • 2011-06-06
    • 1970-01-01
    • 2011-10-18
    • 2019-07-24
    相关资源
    最近更新 更多