简体   繁体   English

Node.js / Sockets-用户连接,它加载以前的消息,但是将消息加载到所有其他聊天用户,而不是刚刚连接的用户

[英]Node.js/Sockets - User connects, it loads previous messages but it loads messages to all other chat users instead of the one that just connected

so I am new to node.js, I am making chat. 所以我是Node.js的新手,正在聊天。 Basically I have two files: server.js (server side) and script.js (client side). 基本上,我有两个文件:server.js(服务器端)和script.js(客户端)。 in server side I put this: 在服务器端,我这样:

in server.js: 在server.js中:

socket.on('previousMessages', function (data){
    db.query("SELECT * FROM messages", function (error, results, fields) {
    for(var i=0;i<results.length;i++){
    var obj = results[i];
            socket.broadcast.emit('message', {

        'message' : "hellow",

        'pseudo' : "arleitiss"

    });
    //console.log("break");
}
    });
    });

in script.js: 在script.js中:

function addMessage(msg, pseudo){
    $("#chatEntries").append('<div class="message"><p>' +
     pseudo + ' : ' + msg + '</p></div>');
}

    socket.on('message', function(data){
        addMessage(data['message'], data['pseudo']);
    });

So when user logins, enters his nickname, it loads all previous messages from database. 因此,当用户登录时,输入他的昵称,它将从数据库中加载所有先前的消息。 Then its' supposed to load them in chat for only that user who connected, but instead: it ignores the user that just connected and loads all messages for other chat users. 然后,它应该只为连接的用户在聊天中加载它们,而是:它忽略刚刚连接的用户,并为其他聊天用户加载所有消息。

So how do I go about fixing this? 那么我该如何解决呢?

Oh yeah and don't mind that I am not using results yet, I am just testing first using basic variables. 哦,是的,不要介意我还没有使用结果,我只是先使用基本变量进行测试。

In your server you use socket. 在服务器中,您使用套接字。 broadcast .emit what emit a message to all OTHER sockets. 广播 .emit向所有其他套接字发送消息的内容。

Just do socket.emit . 只需执行socket.emit即可

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM