2011-12-20 4 views
1

Я создаю веб-приложение, и я нуждается в какой-то способ сделать следующее в JQuery и PHP:Jquery Мгновенные уведомления

  • JQuery отправляет запрос на PHP страницу
  • PHP страница проверяет если есть что-то новое, если нет, то глохнет запрос Jquery до тех пор, пока
  • JQuery получает ответ и отправляет еще один запрос, повторяя процесс

Я попытался методы Long-опроса на Google с jQu но они в значительной степени делают то же самое. Это то, что я ищу.

Любая помощь приветствуется.

Спасибо.

+1

Что вы описали * это * давно опрос, что не так с делать это? –

+0

Проверьте это: http://stackoverflow.com/questions/6433356/jquery-ajax-php-long-polling –

ответ

1

Подобно тому, как предшественник, если вы идете по этому пути, вы также должны убедиться, что ваши сеансы не блокируются по запросу. Вы можете легко попасть в ситуацию, когда сеанс блокируется при выполнении запроса.

Как лучший вариант, вы можете просто работать над решением «heartbeat», запросив страницу PHP каждые 30 секунд. (что похоже на то, что StackOverflow) слышит, чтобы уведомить вас, когда появилось новое сообщение.

Еще лучше, чем это было бы с использованием WebSockets в node.js. Вы могли бы даже PHP оповестить node.js, когда что-то «новое» входит, как вы говорите, так, чтобы оно всегда было точным, и у вас нет постоянного скрипта PHP.

WebSockets через socket.io

0

Вы пробовали настройку в JS, которая начинается каждый раз, когда PHP не возвращает никаких обновлений?

Итак:

  • Вызов функции JS, которая проверяет PHP с помощью Ajax (checkPHP()).
  • PHP не видит новых значений, возвращает «0», например
  • В данной функции прием для функции AJAX, проверьте возврат, если возвращаемое значение == 0: settimeout(checkPHP,5000);
  • Если возвращаемое значение != 0, сделать вещь.
  • Вы можете отобразить значок ожидания до тех пор, как возвращаемое значение != 0
+1

Это простой * опрос *, который как расточительный, так и не «мгновенный», поскольку уведомление отправлено до [частоты опроса] через несколько секунд. – josh3736

+0

Правда, но я не вижу, как вы могли бы поддерживать PHP-скрипт неограниченно до тех пор, пока не появится что-то новое. Это было бы еще более неудачным, и это также будет тайм-аут и т. Д. По-моему, «мгновенный» почти всегда является вариантом опроса, но, возможно, им просто невежественным. –

+0

Вы можете делать подключения сокетов в PHP, и похоже, что несколько человек [сделали попытку внедрения сервера WebSocket] (https://www.google.com/search?q=php+websockets) в PHP (хотя многие из них реализуют устаревшие версии протокола). – josh3736

Смежные вопросы