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