【发布时间】:2017-10-09 06:00:36
【问题描述】:
我正在构建一个聊天程序。
每次用户发送消息时,它都会存储在一个名为“消息”的表中。该表如下所示:
当用户断开连接,然后再次连接时,旧消息的显示方式应与发送时相同。 在图像中,您可以看到收到的消息是灰色的,而其他消息是蓝色的:
当用户连接时,我正在使用以下代码检索旧消息:
// Retrieve conversation
client.on("retrieveConversation", function(data){
var peopleName = data.result.conversation_receiver;
var retrievedMessages = [];
connection.query("SELECT * FROM `messages` WHERE `message_key` = '" + data.result.conversation_key + "'", function(error, results, fields){
if (error) {
console.log(error);
return;
}
else if (results) {
console.log("Messages: ", results);
}
});
console.log("Retrieving conversation", peopleName);
client.emit("addConversationForSelf", peopleName);
});
我如何遍历结果并控制哪些消息(来自正文)应该发送到:1.client.emit("newMessageToOthers", message); 或 2.client.emit("ownMessage", message); - 请注意,这两个选项控制消息是灰色还是蓝色。
【问题讨论】:
-
循环时你知道userfrom_id来区分'ownMessage'和'newMessageToOthers'吗?
-
抱歉@vabii,我不明白你的问题?
-
userfrom_id 与消息一起存储。我已经用我的消息表外观的图像更新了我的问题。
-
要知道 RowDataPacket 是属于您还是其他任何用户,您需要知道您的 userFrom_id,对吗?我在问您是否有该信息,以便在循环期间,您可以调用上述两个“client.emit”调用之一。如果我的问题还不清楚,请告诉我?
-
是的。当用户发送消息时,他们的 id 会添加到每条单独的消息中。
标签: javascript mysql node.js socket.io