Подгрузка сообщений чата
Как сделать подгрузку сообщений для чата?
я хочу, чтобы через определённое время подгружались сообщения, если они существуют и без повторения.
setInterval(function() {
var start = 0;
var form = new FormData();
form.append('id', start);
form.append('function', 'update_message');
var xhr = new XMLHttpRequest();
xhr.open("POST", '../ajax/websocket.php', true);
xhr.send(form);
xhr.onreadystatechange = function() {
var int = eval(xhr.response);
if (int == null) return;
if (int.msg) {int.msg.forEach(item => {
document.querySelector('.messages').innerHTML += item;
})}
start = int.id
}
}, 4000);
Ответы (1 шт):
Автор решения: Crasher
→ Ссылка
Если не хотите использовать websocket, а все делать на js+php, то алгоритм может быть следующим:
- В js в setInterval вешаете функцию, которая будет опрашивать бэкенд на новые сообщения. В качестве параметра запроса передавайте id последнего полученного сообщения.
- В php получаете этот id, и делаете запрос в базу сообщений, где id>полученного. Ну и формируете json, отправляете его на фронт.
- На фронте получаете json, и добавляете все эти сообщения в html.
