Ответ 1
Вы должны изучить COMET методы, такие как навсегда (учебник) и длительный опрос. Это позволяет вам иметь форму клиентской push-сервера.
Я пытаюсь внедрить Facebook-подобную систему живых уведомлений, чтобы уведомлять пользователей, когда кто-то добавляет их в качестве друга, например, их сообщения или ответы на сообщения в свои комментарии.
Вся база данных и часть PHP выполнены, но я не могу понять, как реализовать ее, как Facebook.
Всякий раз, когда кто-то любит/комментирует ваше сообщение в Facebook, в левом нижнем углу экрана появляется светло-синий квадрат. Это происходит, как только кто-то нажимает кнопку или публикует комментарии в Facebook. Я хотел бы знать, что я должен сделать, чтобы реализовать это.
Используя YUI или любую инфраструктуру JavaScript, я могу запросить таблицу базы данных после n
секунд, чтобы проверить наличие уведомлений. Этот метод слишком тяжелый.
Мне было интересно, есть ли какой-либо вариант на стороне сервера или сценарии, чтобы каждый раз, когда в моей таблице базы данных появилась новая запись, сервер будет указывать конкретный клиент. В этом случае ненужные запросы запросов от клиента к серверу будут полностью устранены, и система может эффективно работать на веб-сайте с более чем 50 000 пользователей в Интернете одновременно.
Как я могу это достичь?
Вы должны изучить COMET методы, такие как навсегда (учебник) и длительный опрос. Это позволяет вам иметь форму клиентской push-сервера.
Я действительно удивлен, что никто не упомянул PubNub и Pusher
Эти два (конкуренты) создают инфраструктуру, которая позволяет получать уведомления в реальном времени, как и Facebook.
В основном вы устанавливаете запрос, например, вызываете службу, запрашивающую ваш сервер /db для уведомлений этого пользователя. Вы можете сделать цикл while, который повторяет попытку, если нет уведомления (может быть Thread.Sleep
между поисками). Ваш запрос js будет тайм-аут, после чего вы можете снова вызвать функцию в тайм-ауте. Это означает длительный опрос afaik
Единственный способ сделать это - иметь какой-то механизм (например, Javascript), чтобы повторно опросить сервер для обновлений. Невозможно выполнить операции с сервером в веб-браузерах.