【发布时间】:2012-02-06 14:51:39
【问题描述】:
我正在为我的任务构建一个带有房间的实时聊天应用程序。到目前为止一切都很好,但我无法从数据库中正确检索最新的聊天消息。消息表具有以下字段:
| m_id | u_id | r_id | message | sent |
m_id 是主键。 u_id 和 r_id 是其他表的外键,用于引用发送消息的用户和他们发送消息的房间。 sent 字段包含 PHP 的 microtime(true) 格式的数据:
1326174129.977
我已经构建了我的 AJAX 脚本来从数据库中检索消息,它看起来像这样:
function getMessages() {
var d = new Date();
$.post("/ajax/getmessages.php", {roomID: roomID, timestamp: timestamp}, function(resp) {
resp = $.parseJSON(resp);
for(x in resp) {
$('#chat-holder ul').append('<li>[' + d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds() + '] <strong>' + resp[x].u_id + '</strong>: ' + resp[x].msg + '</li>');
$("#chat-holder").scrollTop($("#chat-holder")[0].scrollHeight);
}
});
}
getMessages 函数每秒运行一次,然后当它从getmessages.php 脚本检索数据时,它会循环遍历 JSON 编码的响应和广告列表项到聊天框架。很简单。
问题在于,它会检索发送到房间的所有消息,而不仅仅是自用户上次轮询最新消息以来已发送的消息。因此,我最终将聊天中发送的每条消息每秒都添加到聊天框架中。
我想出的唯一方法是存储用户最后一次请求消息的时间戳,然后以某种方式在我的后端 PHP 脚本中使用它。不幸的是,我不太清楚如何实现它。
非常感谢任何帮助,谢谢。
【问题讨论】:
标签: php javascript mysql ajax