【发布时间】:2016-02-18 20:49:00
【问题描述】:
我在使用 socket.io 时遇到了这个问题。每当用户单击链接时,它会转到 mysql,提取数据并将其传递回客户端。我发现当我单击链接 n 次时,我得到 n 个重复项。如果我单击链接 3 次,则返回的数组将重复 3 次。这是我的客户端、服务器端的问题,还是方法本身都错了?
客户端:
$(document).on("click", "#view_conv", function(event){
event.preventDefault();
var data = $("#view_conv").data('id');
socket.emit("viewing_conv_get_messages", data, uname);
$("#close_observ_window").show();
socket.on("show_message", function(htmldata){
$("#obvs_content").append(htmldata);
});
});
$("#close_observ_window").click(function(event){
event.preventDefault();
$("#obvs_content").empty();
});
服务器端:
client.query("SELECT id FROM conversations WHERE user_one = ? AND user_two = ? AND active = ?", [name_one, name_two, 1],
function selectCb(err, results){
if(err){ throw err; }
if(results.length > 0){
var convId = "";
var str = "";
for(var i = 0; i < results.length; i++){
convId = str + results[i].id;
}
client.query("SELECT `message`,`sender` FROM chat_messages WHERE conv_id = ? ORDER BY(id) DESC", convId,
function selectCb(err, res){
if(err){ throw err; }
else {
if(res.length > 0){
for(var j=0; j<res.length; j++){
var string_m = '';
var string_send = '';
var message = string_m + res[j].message;
var sender = string_send + res[j].sender;
content = "<b>" + sender + "</b> : " + message + " <br>";
users[users[users.indexOf(admin)]].emit("show_message", content);
console.log(j);
}
}
// recurse_messages(res, admin, 0);
}
});
}
});
【问题讨论】:
标签: javascript mysql node.js sockets socket.io