Javascript Node.js/Sockets-用户连接,它加载以前的消息,但将消息加载到所有其他聊天用户,而不是刚刚连接的用户
所以我是node.js的新手,我正在聊天。 基本上我有两个文件:server.js(服务器端)和script.js(客户端)。 在服务器端,我放了以下内容: 在server.js中:Javascript Node.js/Sockets-用户连接,它加载以前的消息,但将消息加载到所有其他聊天用户,而不是刚刚连接的用户,javascript,node.js,sockets,Javascript,Node.js,Sockets,所以我是node.js的新手,我正在聊天。 基本上我有两个文件:server.js(服务器端)和script.js(客户端)。 在服务器端,我放了以下内容: 在server.js中: socket.on('previousMessages', function (data){ db.query("SELECT * FROM messages", function (error, results, fields) { for(var i=0;i<results.length;
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");
}
});
});
socket.on('previousMessages',函数(数据){
db.query(“从消息中选择*”,函数(错误、结果、字段){
对于(var i=0;i,您在服务器中使用套接字。广播。向所有其他套接字发出消息
只需执行socket.emit。您正在执行SELECT*FROM消息,我看不到任何where子句,它表示where id in(array\U of\U online\U id)这不是重点,这只是将使用连接之前发布的消息加载到聊天室。这非常有效。我还学到了重要的一点,我认为socket.broadcast.emit与socket.emit相同。因此socket.broadcast.emit适用于所有连接的客户端,socket.emit仅适用于客户端?socket.emit是否可以始终用于解析服务器和客户端之间的变量?emit方法用于通过套接字发送数据。客户端可以在套接字对象上使用emit将数据发送到服务器。但服务器端可以在服务器对象上使用emit将数据发送到所有连接的客户端,或在套接字对象上使用emit将数据发送到连接到此soc的单个客户端ket.“broadcast”是套接字对象上的一个“标志”,用于向除当前套接字之外的所有人广播消息。
function addMessage(msg, pseudo){
$("#chatEntries").append('<div class="message"><p>' +
pseudo + ' : ' + msg + '</p></div>');
}
socket.on('message', function(data){
addMessage(data['message'], data['pseudo']);
});