@magogo

Переписка на AJAX Long-polling. Не поможете?

Создаю личные переписки на 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 пробегает по массиву только один раз когда вызывается. Как-то можно это постоянно "следить" за изменениями в массиве? Что бы потом ответ отправить?
  • Вопрос задан
  • 240 просмотров
Пригласить эксперта
Ответы на вопрос 2
VladimirAndreev
@VladimirAndreev
php web dev
setInterval на функцию поиска ответов
Ответ написан
Комментировать
tv_dakota
@tv_dakota
Backend developer
Конечно извините, long polling на ноде? Серьезно? Почему не сокеты?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы