2011-01-20 2 views
6

Я хочу создать систему push-уведомлений, такую ​​как Facebook. Всякий раз, когда Facebook хочет вам что-то сказать (например, кто-то прокомментировал сообщение, пометил вас и т. Д.), Вы увидите небольшое уведомление в левом нижнем углу экрана. Он исчезает и исчезает.push-style уведомления, похожие на Facebook с Rails и jQuery

Как создать такую ​​систему с помощью jQuery и Rails? Как это работает? JS постоянно спрашивает сервер: «Есть ли новое уведомление?» или сервер каким-то образом нажимает на эту услугу.

Прямо сейчас, если пользователь отправляет другому пользователю сообщение (например), я могу добавить уведомление в очередь пользователя с сообщением «у вас есть новое сообщение», но оно не появится до перезагрузки страницы. .

ответ

6

Juggernaut выглядит действительно круто, я видел его демоверсированным давным-давно, теперь он переписан поверх node.js. Ницца. Вы должны установить redis и node.js и запустить сервер node.js, а остальное - безрезультатно.

Pusherapp.com также выглядит круто, он платит, но по крайней мере вам не нужно устанавливать и запускать дополнительные сервисы (и демонтировать, масштабировать их, ...).

Но, если нагрузка не слишком велика, я бы предпочел сохранить все просто и просто опросить с помощью javascript. Вы можете легко написать свои собственные (это не слишком сложно), но некоторые очень хорошие плагины уже существуют для jquery. Например, PeriodicalUpdater.

4

В настоящее время такие проблемы могут быть решены с использованием кометы.

Для больше, http://en.wikipedia.org/wiki/Comet_(programming)

В основном браузеры используют HTTP, который является лицом без протокола и потому что он работает только в запросе, то ответ своего рода путь, мы никогда не можем действительно получить реальный толчок уведомления. Когда вы хотите нажать на браузер, нам нужно каким-то образом подражать этому TCP/Socket, как соединение, чтобы нажать на него. Комета - это просто термин, который используется для определения таких методов.

Существует множество библиотек, которые помогают в этом: - Орбита, Джаггернаут на рельсах.

В новых браузерах есть что-то, называемое Протокол Websockets, библиотеки, о которых я говорил, также используют это. Это обширная тема, но я уверен, вы найдете некоторые основные примеры с Juggernaut и Rails.

Существует также http://pusherapp.com, что делает то же самое, но берет за это деньги.

2

Другим способом много сайтов достичь таких функций, как это чушь, или двунаправленные потоки по синхронной Http:

http://en.wikipedia.org/wiki/BOSH

Вот один из немногих яваскрипта библиотек там:

http://code.stanziq.com/strophe/

Для этого типа установки на сервере требуется сервер xmpp/bosh, но в основном браузер поддерживает открытое соединение (очень похожее на комету) и как сообщения попадают в лоб ser обрабатывает их.

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