我正在爲我的任務構建一個帶有聊天室的實時聊天應用程序。到目前爲止,一切都很順利,但我無法正確地從數據庫中檢索最新的聊天消息。消息表具有以下字段:基於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腳本中使用它。不幸的是,我無法理解如何實現它。
任何幫助非常感謝,謝謝。