Лучший способ показывать уведомления и сообщения в прямом эфире на веб-странице?
-
20-09-2019 - |
Вопрос
Меня интересует действительно хороший способ обмена мгновенными сообщениями, как у meebo, facebook и myspace, а также для уведомлений на странице.Пример на моем сайте теперь, когда пользователь получает новое сообщение электронной почты, комментарий к фотографии, комментарий к профилю, запрос в друзья и некоторые другие вещи, он получит уведомление и ссылку на страницу, на которой он находится, используя jQuery и AJAX.
Я считаю, что в целом это не лучший способ сделать это, хотя, поскольку моему коду jquery придется в основном запускать PHP-скрипт для запроса таблицы mysql каждые 30 секунд или около того для каждого пользователя, у которого открыта страница с запущенным этим скриптом.Я хотел бы в конечном итоге добавить какой-нибудь вид обмена мгновенными сообщениями, подобный facebook, в панели чата в нижней части экрана, если я смогу найти эффективный способ сделать это.
Я слышал термины Comet и HTML5 WebSockets, но я не уверен, что это те решения, на которые я должен обратить внимание для такой функции?Я хотел бы свести пропускную способность к минимуму, и выполнение запроса каждые несколько секунд кажется не очень эффективным на сайте с высоким трафиком.
Если вы знаете какие-то хорошие решения, пожалуйста, немного объясните, как они работают, пожалуйста
Решение
Я думаю, Facebook использует XMPP для их чата, так что взгляните на это.
XMPP - это
открытая технология для общения в режиме реального времени, которая поддерживает широкий спектр приложений, включая мгновенные сообщения, присутствие, многопользовательский чат, голосовые и видеозвонки, совместную работу, облегченное промежуточное программное обеспечение, синдикацию контента и обобщенную маршрутизацию XML-данных.
Вы бы установили отдельный сервер для обработки сообщений и в вашем приложении вы бы внедрили клиент с одним из доступных библиотеки.
Другие советы
Вы ищете сервер "comet".Поскольку вы говорите на PHP, вашим лучшим решением было бы решение SaaS, такое как Веб-синхронизация по требованию, поскольку PHP имеет проблемы с масштабированием, когда дело доходит до большого количества одновременных подключений, которые остаются открытыми.Смотрите также этот вопрос.
Не могли бы вы создать общую очередь сообщений, к которой ajax может запрашивать?Возможно, это php-скрипт, который хранит большую часть сообщения в memcached (и, возможно, записывает в db в случае сбоя).
Не уверен, но любопытно услышать другие решения ...
Основная проблема заключается в том, что вам нужно внедрить сервер Comet (т.е. внедрить сервер Push).Стандартные веб-хостинги и apache не позволяют вам легко это сделать.Другим размещенным решением (помимо веб-синхронизации) является Сервер Goldfish (Золотая Рыбка).В настоящее время свободен.