2009-06-25 2 views
3

Я слышал, что веб-чат-клиенты, как правило, используют сетевые фреймворки, такие как скрученный фрейм .Возможно ли создание веб-чата без оболочки на основе сокетов?

Но можно ли создать веб-чат-клиент без сетевой структуры - используя только ajax соединений?

Я хотел бы создать клиентский сеанс чата, основанный на сеансе, который использует сеансы для указания окончания чата. Возможно ли это в Rails, используя только ajax и без сетевой инфраструктуры?

Какое влияние он должен использовать сетевые рамки и какое влияние это может оказать на мое приложение, чтобы не использовать его? Также будут оценены любые общие рекомендации по подходу к этому проекту.

ответ

5

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

Простой подход состоит в том, чтобы каждый клиентский опрос каждые несколько секунд проверял новые сообщения, отправленные другим. Недостатком является то, что сообщения не мгновенно доставляются. Я думаю, что это пример, найденный в rails book.

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

Я хотел бы добавить, что хотя последнее работает, это не то, что предназначалось для http, и это немного взломало, но эй, что бы ни получилось. Рабочим примером является rails chat project, который использует производную juggernaut.

3

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

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

Если позже, то вам нужно разрешить прямые tcp-соединения между двумя клиентами и нужно немного приблизиться к металлу, так сказать.

Итак, спросите себя: вы хотите заплатить за транспортные расходы и иметь потенциальную ответственность за разглашение того, что люди могут печатать на своем клиенте; или, скорее всего, вы просто создадите чат-программу, которую люди могут использовать для общения друг с другом?

Конечно, прежде чем даже зайти так далеко, вы действительно хотите создать еще один чат-клиент? Это пространство уже очень многолюдно.

Смежные вопросы