уведомления в стиле push, похожие на Facebook, с Rails и jQuery - PullRequest
6 голосов
/ 20 января 2011

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

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

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

Ответы [ 3 ]

6 голосов
/ 20 января 2011

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

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

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

4 голосов
/ 20 января 2011

В настоящее время такие проблемы можно решить с помощью Comet.

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

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

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

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

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

2 голосов
/ 20 января 2011

Еще один способ, с помощью которого многие сайты реализуют такие функции, как bosh, или двунаправленные потоки по синхронному http:

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

Вот одна из немногих библиотек javascript:

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

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

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

...