Как реализовать автообновление страницы в ответ на изменения на сервере?

Гуглил, как сделать ajax'ом автообновление элемента страницы - получил только обновление с интервалом во времени. Возникает вопрос, а как сделать обновление не с интервалом, а ровно в тот момент, когда на сервере появилась новая информация?

Обновлять каждую секунду? Больно много запросов получается. А если информация появляется чаще чем раз в секунду? В общем хочу понять, как оно реализованно в том же "ВКонтакте", например. Для себя я обнаружил, что комментарии подгружаются быстрее чем раз в секунду, то же самое с конференциями.
  • Вопрос задан
  • 2969 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Levhav
Возьмусь за разработку проектов любой сложности.
Да слать каждую секунду это не то что нужно. Хотя бы по тому что данные в таком случаи будут приходить раз в секунду и не чаще.

Для того что бы клиент получил данные мгновенно надо держать с ним постоянно открытое соединение. Это можно сделать используя long polling или websockets. Для php это затруднительно в плане ресурсов сервера, по этому обычно используют комет сервер. Он как правило заточен на поддержание огромного количества открытых соединений.

Если у вас нет опыта работы с чем nо кроме php вам имеет смысл ознакомится с технологией на примере работы с комет сервисом предлагаемым по Saas модели, это быстрее чем разобратся в node.js и socket.io

Вот несколько comet сервисов.
[Ru] comet-server.ru/menu_id/10

[En] https://www.tambur.io/pricing
[En] pusher.com/pricing
Ответ написан
Комментировать
MAKAPOH
@MAKAPOH
многостаночник
Посмотрите на autobahn - реализация высокоуровнего протокола обмена сообщениями поверх вебсокетов.
Ответ написан
Комментировать
TheSunwave
@TheSunwave
Я
Сдается мне, что у VK не сокеты, а long polling до сих пор.
Как можно заметить скрипт ждет пока придет ответ, и как приходит ответ, инициирует новый запрос.
Ну, вы поняли, в общем :)
9CLCopd.png

UPD: Комменты в комментах прочел после публикации. Ну, пусть будет, я вот пруфпик приложил)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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