Зачем использовать Faye для чата, а не Ajax (rails)

Я не уверен, каковы преимущества использования Faye или какой-либо другой системы push, а не использования для нее Ajax.

В частности, я имею в виду реализацию функций чата и уведомлений.

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

Я что-то упустил в Faye или в Ajax? Это более эффективно?


person Nick Ginanto    schedule 23.05.2012    source источник
comment
Фэй может использовать веб-сокеты (двусторонние, всегда при подключении). Ajax — это запрос/ответ (одностороннее, однократное соединение).   -  person Kris    schedule 30.08.2012


Ответы (1)


Фэй устанавливает соединение, с помощью которого сервер может передавать данные клиенту. При использовании Ajax клиент должен запрашивать данные, и если он не знает, доступны ли новые данные (как в случае с чат-клиентом), он должен периодически запрашивать новое содержимое.

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

Обратная сторона этого заключается в том, что вы сохраняете соединение с сервером открытым. Это может сработать против вас, если у вас большое количество простаивающих клиентов. Из-за этого будет зависеть от контекста, какой подход лучше, или, возможно, даже гибридный подход (открытие соединения Faye для активного использования, а затем бездействие для опроса Ajax на нечастой основе).

person Godeke    schedule 23.05.2012
comment
Спасибо. Таким образом, Ajax лучше всего использовать для незначительных обновлений или вещей, которые клиент опрашивает, а отправка лучше всего подходит для крупных обновлений, которые могут иметь много клиентов, нуждающихся в этой информации? - person Nick Ginanto; 24.05.2012
comment
Я думаю, что в краткой форме Ajax лучше всего подходит, когда время обновления определяется действиями клиента (взаимодействиями с пользовательским интерфейсом), а Faye имеет преимущество, когда сервер может делать непредсказуемые вещи, которые пользовательскому интерфейсу действительно нужно немедленно отразить. Я мог видеть, что доступ к основным обновлениям осуществляется через Ajax (сначала опрос на наличие обновления, а затем извлечение обновления), если своевременность не является критической проблемой. Я видел сценарии Ajax, настроенные на опрос каждую секунду: я бы подумал об использовании Faye вместо этого, потому что я все равно эффективно эмулирую открытое соединение. - person Godeke; 26.05.2012