Можно ли создать веб-клиент чата без фреймворка на основе сокетов?

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

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

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

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


person terrestrial    schedule 25.06.2009    source источник


Ответы (2)


arrow_upward
5
arrow_downward

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

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

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

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

person Arthur    schedule 25.06.2009

arrow_upward
3
arrow_downward

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

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

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

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

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

person NotMe    schedule 25.06.2009