Как обновить контент, основываясь на действиях пользователя [например, на стене Facebook] - PullRequest
0 голосов
/ 28 февраля 2011

Для моего следующего приложения я хотел бы реализовать что-то, что имеет функцию, такую ​​как стена на Facebook, но позвольте мне объяснить немного.Для тех из вас, кто использовал Facebook, вы знаете, что, когда кто-то публикует сообщение на вашей стене и входит в свою учетную запись, вы сразу же получаете уведомление где-то в левом нижнем углу.В последнее время они даже продвинули это немного дальше, и если кто-то комментирует это, комментарии обновляются, когда вы визуализируете страницу, это похоже на мгновенный чат.

Мое приложение будет разрабатываться на PHP, для этого я буду использовать Zend Framework.Меня интересует основной принцип, который заставляет стену фейсбука вести себя так (обновления в режиме реального времени).Я знаю, что в этом задействован Ajax, но я не могу точно сказать, как JavaScript запускается, когда пользователь что-то делает.Или даже больше, как вернуть пользователю некоторую информацию, которая была добавлена ​​после того, как он просмотрел страницу.Например, допустим, что кто-то добавляет меня в друзья.Я хотел бы видеть уведомление о том, что «Х добавил вас в друзья», если я вошел в систему. Надеюсь, вы понимаете, что я пытаюсь сделать.Если вы можете рассказать мне некоторые основные идеи, возможно, предоставьте ссылки, содержащие эту информацию, я был бы очень благодарен.

Спасибо, что уделили время на прочтение этого.

Ответы [ 4 ]

2 голосов
/ 28 февраля 2011
  1. Если какое-либо событие сработало, сохраните событие в базе данных (с ajax или без ajax).

  2. Вам понадобится скрипт на сервере, чтобы проверить, было ли запущено какое-то событие или нет. Этот скрипт должен иметь возможность проверять события, которые хранятся в базе данных.

  3. Вам необходимо периодически выполнять скрипт на шаге 2. Это может быть достигнуто с помощью ajax (javascript или jquery) и функции settimeout (на javascript) для периодической отправки ajax-запроса на сервер.

  4. Изменения отправляются с сервера. Поэтому разберите ответ и обновите страницу, используя javascipt и jquery.

Итак, его можно суммировать как

  1. Зарегистрировать событие (для одного пользователя)

  2. Проверить событие (для другого пользователя)

  3. Разобрать ответ и обновить страницу

Есть несколько элегантных способов сделать это, как ответили другие.

Лучше всего начать проект и попросить о помощи, где бы он ни застрял.

2 голосов
/ 28 февраля 2011

вам нужно посмотреть на комету , обратный ajax , ajax polling

0 голосов
/ 28 февраля 2011

Также вы можете прочитать что-нибудь о AMQP .Вы можете отправить сообщение получателям inboxes (после некоторых действий в вашей системе) и затем прочитать inboxes после запуска или с некоторым интервалом времени.

0 голосов
/ 28 февраля 2011

Поддерживать HTTP-соединение можно только частично, поэтому, вероятно, лучшим вариантом является опрос изменений.Вы можете посылать запрос каждую секунду, чтобы узнать, изменилось ли что-либо с момента 'x'.На каждый ответ вы отправляете вместе с сервером время.С новым запросом вы отправляете время старого запроса, и сервер может возвращать любые события, произошедшие между ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...