Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

Удачи

Ваше здоровье

Другие советы

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

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

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

Возможно, было бы лучше узнать о чушь в долгосрочной перспективе.Это естественное развитие КОМЕТЫ.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top