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

Как создать функцию уведомления в режиме реального времени, например, facebook?

Я собираюсь создать функцию уведомления в режиме реального времени для моего веб-приложения (маленькой социальной сети), и я не знаю, с чего начать.

Это то, что я хочу построить: есть такие кнопки, формы комментариев,... Пользователи нажимают так, пишут свои комментарии и (относительно) немедленно, в браузере владельца отображается количество новых комментариев и комментариев. Что-то вроде этого.

Я читал о socketIo на nodeJs, MeteorJS, но, к сожалению, им нужен WebSocket, поддерживаемый mordern браузерами. Я только что прочитал о технике Comet и считаю ее довольно простой в применении. Но я не уверен, что он будет хорошо работать, потому что Comet полагается на длительное соединение (исправьте меня, если я ошибаюсь).

Кроме того, я думаю, что facebook использует Comet для функции push-уведомления. Через консольную вкладку в плагине firebug я всегда вижу соединение с Facebook. Так может ли кто-нибудь показать мне технику, модель для разработки такой функции?

4b9b3361

Ответ 1

Перспективной идеей является работа с API-интерфейсом уведомления HTML5; это идеально, если вы хотите, чтобы уведомления отображались на экране пользователя, пока его браузер работает (даже если вы занимаетесь серфингом на другом веб-сайте или все окна закрыты).

http://www.paulund.co.uk/html5-notifications

Однако, если вы хотите обновить разные части своей страницы асинхронно (без обновления или нажатия кнопки), вы должны использовать вместе:

  • Ajax calls;
  • Слушатели и наблюдатели.

Когда вы вызываете Ajax для получения определенных типов json-данных (например), он может инициировать появление значка (слушателя) с рядом новых уведомлений или так...

С установленным JQuery вы должны быть в порядке...

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

Вы можете начать здесь:

Как реализовать "наблюдателя" в JQuery без плагинов? (он старый, но интересный)

Или на этой странице:

мгновенные обновления браузера с помощью ajax/jquery

(невероятно, как часто запросы google возвращают страницы stacko)

Ответ 2

Вы должны проверить MQTT. Он в основном работает над моделью "Публикация-Подписка" и очень прост в использовании. Этот протокол имеет небольшую площадь и потребляет меньше полосы пропускания. Facebook Messenger также использует MQTT.

Ответ 3

вы можете использовать вызов ajax, входящий в (например) PHP скрипт на сервер, который держит соединение открытым и только отвечает, если и когда что-то должно отображаться пользователю. если ничего не произойдет в течение определенного времени, соединение закрывается, и клиент запускает новый вызов ajax. обратите внимание, что это касается только взаимодействия между клиентом и сервером, вам все равно нужен метод уведомления внутри сервера, чтобы разбудить php script, если вы хотите избежать постоянного опроса базы данных script, но есть довольно много от soultuions до этого, и они зависят от того, какой язык вы используете на сервере.

Ответ 4

У меня есть идея, это просто, но это может сработать. Почему бы вам не скрыть панель уведомлений как тег Div и создать его с помощью css, чтобы он выглядел как панель уведомлений. Затем всякий раз, когда кому-либо нравится или комментирует страницу, напишите функцию php или js и подключите ее к кнопке отправки комментариев или комментариев, которая покажет владельцам страниц невидимый div на видимый. И я верю, что в зависимости от того, что вы используете, я бы предпочел php session() определить, является ли владелец страницы в сети и может получать уведомления. кроме того, если вам нужно отслеживать статистику страницы, вы можете создать небольшую базу данных, содержащую идентификатор страницы и комментарии пользователей. Вы можете использовать эту базу данных для нажатия нескольких уведомлений на скрытое Div. вы можете использовать JQuery, чтобы заставить его двигаться, как Facebook, если хотите. Я не уверен на 100%, если это самый оптимизированный способ сделать это, но это возможно. Кстати, я просмотрел некоторых, чтобы посмотреть, что люди используют для этого. удивительно, что я тоже не мог найти что-то.