Подтвердить что ты не робот

Как реализовать facebook как уведомление?

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

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

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

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

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

Как я могу это достичь?

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 4

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

Ответ 5

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