Можно ли создать веб-клиент чата без фреймворка на основе сокетов? - PullRequest
3 голосов
/ 26 июня 2009

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

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

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

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

Ответы [ 2 ]

5 голосов
/ 26 июня 2009

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

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

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

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

3 голосов
/ 26 июня 2009

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

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

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

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

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

...