Создаю личные переписки на AJAX long-polling, столкнулся с проблемой: нужно отправить клиенту ответ от сервера (см. код)
var arr = [];
app.post('/post', function (req, res) { // На этот адрес приходят сообщения
var message = req.body; // Получаем сообщение
arr.push(message); // Добавляем его в массив
});
app.get('/im:id', function (req, res) { // Клиент запрашивает ответ AJAX'ом
req.params.id = req.query.uid_from;
onSubscribe(req, res); // Ждет ответа от этой функции
function onSubscribe(req, res) {
var answer = arr.find(i => i.uid_from == 1); // Ищет ответ по параметру uid_from == 1 (просто для примера)
if (answer !== undefined) { // Если ответ по заданному параметру есть
res.send(answer); // Отправляем ответ
}
arr = []; // Очищаем массив (надо доработать)
}
return;
});
Пример данных в массиве:
[
{ msg: 'dsfsdfsdfsdf', uid_from: '5', uid_to: '2' },
{ msg: 'dsfsdfsdfsdf', uid_from: '1', uid_to: '9' },
{ msg: 'dsfsdfsdfsdf', uid_from: '9', uid_to: '1' },
{ msg: 'dsfsdfsdfsdf', uid_from: '2', uid_to: '5' }
]
Проблема в том, что функция onSubscribe пробегает по массиву только один раз когда вызывается. Как-то можно это постоянно "следить" за изменениями в массиве? Что бы потом ответ отправить?