Подгрузка сообщений чата

Как сделать подгрузку сообщений для чата?

я хочу, чтобы через определённое время подгружались сообщения, если они существуют и без повторения.

введите сюда описание изображения

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, то алгоритм может быть следующим:

  1. В js в setInterval вешаете функцию, которая будет опрашивать бэкенд на новые сообщения. В качестве параметра запроса передавайте id последнего полученного сообщения.
  2. В php получаете этот id, и делаете запрос в базу сообщений, где id>полученного. Ну и формируете json, отправляете его на фронт.
  3. На фронте получаете json, и добавляете все эти сообщения в html.
→ Ссылка