Как реализовать Facebook как уведомление? - PullRequest
31 голосов
/ 19 марта 2011

Я пытаюсь внедрить систему лайв-уведомлений, подобную Facebook, чтобы уведомлять пользователей о том, что кто-то добавляет их в друзья, например, их сообщения или ответы на их комментарии.

Вся работа с базой данных и PHP завершена, но я не могу понять, как реализовать это, как это делает Facebook.

Всякий раз, когда кому-то нравится / комментирует ваше сообщение в Facebook, в левом нижнем углу экрана появляется голубая рамка. Это происходит, как только кто-то нажимает кнопку «Нравится» или публикует комментарий в Facebook. Я хотел бы знать, что я должен сделать, чтобы реализовать это.

Используя YUI или любую инфраструктуру JavaScript, я могу запросить таблицу базы данных через n секунд, чтобы проверить уведомления. Этот метод слишком тяжелый.

Мне было интересно, есть ли какой-нибудь мод на стороне сервера или можно создать сценарии, чтобы всякий раз, когда в моей таблице базы данных появлялась новая запись уведомления, сервер сообщал об этом конкретном клиенте. Таким образом, будет полностью исключен ненужный запрос вызовов от клиента к серверу, и система сможет эффективно работать для веб-сайта с более чем 50 000 пользователей онлайн одновременно.

Как мне этого добиться?

Ответы [ 5 ]

23 голосов
/ 19 марта 2011

Вы должны изучить COMET методы, такие как forever frame ( tutorial ) и длительный опрос.Это позволяет вам иметь форму принудительной связи между сервером и клиентом.

5 голосов
/ 14 сентября 2012

Я действительно удивлен, что никто не упомянул PubNub и Pusher

Эти двое (конкуренты) создают инфраструктуру, которая позволяет получать уведомления в режиме реального времени, как Facebook.

2 голосов
/ 19 марта 2011
0 голосов
/ 17 мая 2011

Вы в основном настраиваете запрос, например, вызываете сервис, который запрашивает у вашего сервера / db уведомления этого пользователя. Вы можете сделать цикл while, который повторяет попытку, если нет уведомлений (возможно Thread.Sleep между поисками). Ваш js-запрос будет прерван, после чего вы сможете снова вызвать функцию через тайм-аут. Это означает длительный опрос afaik

0 голосов
/ 19 марта 2011

Единственный способ сделать это - иметь какой-то механизм (например, Javascript) для многократного опроса сервера на наличие обновлений. Выполнение проталкивания сервера в веб-браузеры невозможно.

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