Вопрос

У меня есть сайт для участников, на который я хотел бы добавить чат (LAMP на специальном ящике).Это не должно быть слишком сложно, но для чата необходимо использовать имена пользователей уже вошедших в систему участников.

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

Есть какие-нибудь советы/указатели?

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

Решение

Вот два проекта, которые могут вам помочь (оба на основе AJAX/JSON):

  • Плагин jQuery Ajax Chat — простой и легкий плагин для jQuery.Никаких наворотов и свистков, но свою работу он выполняет.

  • Аякс ИМ - полноценное веб-приложение, которое пытается имитировать все функции, которые можно ожидать от настольного IM-клиента.Довольно большой размер загрузки (324 КБ в сжатом виде).

В настоящее время я использую первый вариант в качестве базовой системы обмена мгновенными сообщениями в одном из своих проектов.Мне удалось реализовать это, используя системные учетные данные каждого пользователя (поскольку они уже вошли в систему, вместо того, чтобы позволять им выбирать свой собственный псевдоним).Образец включает исходный код PHP для сценария, опрашиваемого AJAX.Это отлично работает.

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

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

  1. Решение Java-апплета - либо найдите, либо создайте Java-апплет, который взаимодействует с чат-сервером.Апплет может быть IRC-клиентом или специальным клиентом чата с собственным сервером.Я даже видел, как некоторые веб-сайты используют Java-апплет в качестве интерфейса связи, где весь интерфейс управляется Javascript и HTML в браузере, но Javascript отправляет и принимает события от апплета для запуска чата.

  2. АЯКС Публикация/опрос. Каждый раз, когда пользователь пишет сообщение, отправляйте его на HTTP-сервер, где все подключенные пользователи периодически опрашивают новые сообщения.

  3. Комета - Используя в основном Javascript, каждый клиент устанавливает долгосрочное соединение с HTTP-сервером и бездействует.Когда сообщение отправляется от пользователя, оно отправляется через уже существующее соединение.И вместо того, чтобы запрашивать их, новые сообщения от других пользователей просто передаются по тому же соединению.

Лично я считаю третий вариант самым интересным, но и самым сложным.Вероятно, вам потребуется создать собственную версию HTTP-сервера для поддержки долговременного соединения, необходимого Comet.А поскольку в TCP/IP существует ограничение на дескрипторы сокетов длиной 16 бит, вы будете ограничены примерно 64 КБ сокетов на каждый IP на вашем сервере.(Помните, что каждому клиенту потребуется открытый сокет!) Наконец, методы создания клиентского кода Comet в разных браузерах сильно различаются.Для этого существует несколько фреймворков, но вам придется поддерживать их, пока выходят новые браузеры.

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

Используйте AJAX для отправки сообщений чата на сервер и периодической загрузки изменений в окно чата (в Prototype есть удобная функция для этого, которая будет проверять сервер на наличие обновленных данных (периодическое средство обновления ajax)).Согласно вашим спецификациям «не так уж и сложно», это в значительной степени скелет.

Ах да, и если вы хотите, чтобы сообщения чата сохранялись в базе данных, сделайте конечно вы защищаете себя от SQL-инъекций.

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