Ааа! Вы пытаетесь нарушить принципы Интернета :) Вы видите, что если бы сеть была чисто MVC (модель-представление-контроллер), «сервер» мог бы на самом деле отправлять сообщения клиентам и просить их обновить. Проблема в том, что сервер может быть сбалансирован по нагрузке и один и тот же запрос может быть отправлен на разные серверы. Теперь, если вы хотите отправить сообщение обратно клиенту, вы должны будете знать, кто все подключен к серверу. Допустим, сайт довольно популярен, и к нему ежедневно подключается около 100 000 человек. На самом деле вам нужно будет хранить IP-адреса каждого из них, чтобы знать, где в Интернете они находятся, и чтобы иметь возможность «отправить» им сообщение.
Предостережения:
- Что, если они больше не просматривают ваш сайт? Вы видите, что в настоящее время нет способа автоматически выйти из системы, если вы закроете браузер. Сервер должен проверить по истечении установленного времени ожидания, если вы вышли из системы (или вы отправляете новый одноразовый номер с каждым ответом, чтобы сервер не мог выполнить эту проверку)
- А как насчет перезагрузки системы / сбоя и т. Д.? Вы потеряете все IP-адреса, которые вы отслеживали, и вернулись на круги своя - у вас есть люди, подключенные к вам, но до тех пор, пока вы не получите новые запросы, вы не сможете «отправлять» им данные, когда они могут ожидать их как за вашу модель.
- Давайте рассмотрим пример новостных лент Facebook или ссылку «Самые последние», расположенную рядом с верхним правым уголком. Иногда, когда вы просматриваете свою стену, вы видите число рядом с самым последним, которое повышается, или появляется новый «канал». верхняя часть вашего сообщения на стене! Это клиент, отправляющий периодические запросы на сервер, чтобы узнать, что было обновлено, а не наоборот
Видите ли, это делает его простым и спокойным. Вы можете почувствовать, что клиент неэффективно «опрашивает» сервер, чтобы получить данные, и вы бы предпочли push, но дизайн сервера упрощается:)
Я полагаю, что лучше всего использовать ajax-pull - вы распределяете вычисления для клиента и делаете их простыми (принцип KIS:)
Конечно, вы можете обойти это, вопрос в том, стоит ли это того?
Надеюсь, это поможет:)