Лучший способ отображать уведомления и сообщения в ЖИВОМ виде на веб-странице?

Меня интересует действительно хороший способ обмена мгновенными сообщениями, такой как у meebo, facebook и myspace, а также для уведомлений на странице. Пример на моем сайте сейчас, когда пользователь получает новое почтовое сообщение, комментарий к фотографии, комментарий профиля, запрос на добавление в друзья, некоторые другие вещи, он получит сообщение с уведомлением и ссылку на странице, на которой он находится, используя jQuery и AJAX.

Я считаю, что это не лучший способ сделать это, хотя мой код jquery должен будет в основном запускать PHP-скрипт для запроса таблицы mysql каждые 30 секунд или около того для каждого пользователя, у которого открыта страница с этим скриптом. Бег. Я хотел бы в конечном итоге добавить что-то вроде обмена мгновенными сообщениями, например, в facebook в панели чата в нижней части экрана, если я смогу найти эффективный способ сделать это.

Я слышал термины Comet и HTML5 WebSockets, но не уверен, что это те решения, которые мне следует искать для такой функции? Я хотел бы, чтобы пропускная способность была минимальной, и выполнение запроса каждые несколько секунд кажется не очень эффективным на сайте с высокой посещаемостью.

Если вы знаете несколько хороших решений, пожалуйста, объясните, как они работают.


person JasonDavis    schedule 15.01.2010    source источник


Ответы (4)


Я думаю, что Facebook использует XMPP для своего чата, так что взгляните на него.

XMPP - это

открытая технология для связи в реальном времени, которая поддерживает широкий спектр приложений, включая обмен мгновенными сообщениями, присутствие, многосторонний чат, голосовые и видеозвонки, совместную работу, облегченное промежуточное программное обеспечение, распространение контента и обобщенную маршрутизацию XML-данных.

Вы бы установили отдельный сервер для обработки сообщений, а в своем приложении вы бы реализовали клиент с помощью одной из доступных библиотек.

person Gordon    schedule 15.01.2010

Вы ищете "кометный" сервер. Поскольку вы говорите о PHP, лучшим решением будет решение SaaS, например WebSync On-Demand. , поскольку PHP имеет проблемы с масштабированием, когда дело доходит до большого количества одновременных соединений, которые остаются открытыми. См. Также этот вопрос.

person jvenema    schedule 20.01.2010

Может ли у вас быть общая очередь сообщений, которую может запрашивать ajax? Возможно, это php-скрипт, который хранит большую часть сообщения в memcached (и, возможно, записывает в базу данных в случае сбоя).

Не уверен, но интересно услышать другие решения ...

person mr-sk    schedule 15.01.2010

Основная проблема заключается в том, что вам необходимо реализовать сервер Comet (т.е. реализовать Server Push). Стандартные веб-хосты и apache не позволяют сделать это легко. Другое размещаемое решение (помимо Web Sync) - это Goldfish Server. В настоящее время бесплатно.

person cmroanirgo    schedule 28.01.2010