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

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

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

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

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


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


Ответы (2)


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

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

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

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

person Arthur    schedule 25.06.2009

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

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

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

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

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

person NotMe    schedule 25.06.2009