我正在为我的任务构建一个带有聊天室的实时聊天应用程序。到目前为止,一切都很顺利,但我无法正确地从数据库中检索最新的聊天消息。消息表具有以下字段:基于AJAX脚本基于发送时间检索聊天消息
| 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脚本中使用它。不幸的是,我无法理解如何实现它。
任何帮助非常感谢,谢谢。