Push на стороне сервера на стороне сервера - PullRequest
5 голосов
/ 13 января 2009

Я бы хотел реализовать масштабируемый чат в рельсах, используя AJAX. Из исследований я знаю, что единственная масштабируемость происходит с серверной нагрузкой.

Мои два вопроса:

1) В какой момент на достаточно эффективном сервере чата опрос становится запрещенным? 2) Я действительно не хочу использовать Джаггернаут. Я не знаю много о том, как работает комета. Я думаю, мне интересно, будет ли это ужасно трудно для меня построить с использованием Javascript (для создания клиентского сервера / опрашивающего устройства) и другого языка (чтобы обеспечить эффективный опрос клиентов за брандмауэром и интеграцию в CGI). и 3) (да, из 2), правильно ли я это делаю?

Самый простой ответ, на который я мог надеяться, - это количественное выражение «да, вы поместили 5 строк Javascript в клиент и 20 строк ruby ​​в CGI-скрипт и назвали его днем».

Ответы [ 5 ]

2 голосов
/ 01 апреля 2010

Я пытаюсь сделать то же самое прямо сейчас. Джаггернаут работает хорошо, но не для Rails 3, и если это не является обязательным требованием, тогда я предлагаю использовать его, потому что очень просто создать чат. Мой проект использует Rails 3 и опрашивает сервер каждые 3 секунды (Campfire также делает 3). Я использую Rails Metal, чтобы сделать опрос очень быстрым. Если вы хотите использовать Juggernaut, тогда отлично, 2 строки на стороне клиента js и 1 или 2 на стороне сервера. Иначе приступай к работе!

1 голос
/ 14 января 2009

Если бы это было так легко сделать, люди не создали бы эти технологии. ИМХО, я думаю, что опрос всегда будет хакерским способом сделать это. Сказал ....

Я не уверен, почему Джаггернаут не по карточке. Парень, работа для создания этого сайта 64Квадрата с ним и отлично работает.

Я знаю, что другие сайты, такие как WeeWar , используют метод опроса, и у них более 400 запросов мин. Поэтому я думаю, что пройдет некоторое время, прежде чем масштабирование станет проблемой.

Удачи

Приветствия

1 голос
/ 13 января 2009

да, вы помещаете 5 строк Javascript в клиент и 20 строк ruby ​​в CGI-скрипт и называете это днем ​​

0 голосов
/ 14 января 2009

А как насчет костра? Опрашивает сервер каждые 5 секунд. Работает как сон.

0 голосов
/ 14 января 2009

COMET работает, оставляя соединение с сервером открытым в Javascript (существует множество примеров того, как получить эти асинхронные данные на веб-сайте COMET). Сервер по существу записывает данные и сбрасывает их, это можно сделать с помощью Mutex в тесной петле. Вам также, вероятно, понадобится очередь сообщений.

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

Несмотря на то, что у Джаггернаута есть кривая обучения (а может и не совсем), изучение COMET является более сложным. Даже просто асинхронное нажатие сложнее. Не только это, но вам нужно подумать, как сделать так, чтобы оно хорошо масштабировалось. Я никогда не использовал Juggernaut, но что касается плагинов ROR, я предполагаю, что это тривиально. И если они поймут, как сделать его лучше масштабируемым, вы получите бесплатную более быструю производительность.

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

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