Лучший способ показывать уведомления и сообщения в прямом эфире на веб-странице?

StackOverflow https://stackoverflow.com/questions/2073425

Вопрос

Меня интересует действительно хороший способ обмена мгновенными сообщениями, как у 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 (Золотая Рыбка).В настоящее время свободен.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top