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

StackOverflow https://stackoverflow.com/questions/1046606

Вопрос

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

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

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

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

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

Решение

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

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

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

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

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

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

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

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

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

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

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