Как получать данные от сервера без setInterval?

Сделал простенький новостной сайт, хочу, чтобы новости подгружались ajax-ом по мере их добавления.
Узнаю о том, есть ли новые новости так:
$(document).ready(function () {
    setInterval(update,5000);
    function update() {
        var last = '&last=' + $('#responds li').last().attr('id').split('_')[1];
        $.post('update.php',last,resp);
        function resp(data){
            $("#responds").append(data);
        }
    }
});

Т.е. я посылаю id последней новости, на сервере делаю запрос
$newnotes =  $sql->query('SELECT id,header,text FROM news WHERE id > '. $last. ' ORDER BY id ASC');

И вывожу все это дело, если конечно есть, чего выводить.
Но, мне не очень нравится, что клиент просто насилует сервер запросами, думаю это не особо хорошо..
Как можно сделать, чтобы сервер сообщал клиенту что есть новые новости, а после этого уже выполнялся запрос на их добавление?
  • Вопрос задан
  • 223 просмотра
Решения вопроса 1
sayber
@sayber Куратор тега PHP
Да, я программирую на PHP и еще асинхронно!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@pikkvile
developer
WebSockets - это лучше всего.
А ещё можно long polling - это как у вас сейчас, только надо, чтобы сервер не сразу отвечал "нет новостей", а вместо этого останавливал бы обработку запроса и не отвечал до тех пор, пока новость не появится. Такой долгий-долгий pending запрос.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы