веб-чат с использованием кометы в Java? - PullRequest
1 голос
/ 19 августа 2011

Я новичок в комете.

Может кто-нибудь сказать мне, как реализовать веб-чат с использованием кометы в Java (Любые веб-технологии, например, JSP, стойки сервлетов и т. Д.) .. ??

Любая помощь очень ценится.

Спасибо.

1 Ответ

2 голосов
/ 19 августа 2011

Установите базовое приложение Struts2 с помощью maven (веб-сайт Struts2).

Добавьте плагин Spring.

Создайте объект службы, который будет хранить журнал сообщений чата (List<Map<int, String>>).Каждое добавленное сообщение добавляет новую карту в список с индексом на 1 больше, чем предыдущее с отправленным сообщением.Если список достигает определенного размера, удалите самые низкие сообщения, чтобы сохранить максимальный размер.(Для этого есть более удобная структура данных, но вы можете понять это).

Добавьте плагин Struts2-JSON.

Создайте два действия json (прочитайте, как использовать Struts2-JSON-плагин).SendMessage и GetMessagesSince Действие.Также создайте базовое действие для создания страницы чата (я бы также использовал плагин соглашений).

SendMessage будет иметь установщик для сообщения.Было бы неплохо иметь метод получения статуса (возвращает «успех» или «сбой»).

GetMessagesSince имеет метод получения сообщений, который будет возвращать список {int, Strings}.У него будет установщик для lastMessage (int).

Теперь для веб-страницы.В настоящее время просто используйте короткий опрос (вызов в цикле после короткого перерыва), чтобы получить сообщения больше, чем «lastMessage» (который начинается с нуля).Используя магию jQuery, вы получите ответ от GetMessagesSince (который запустит клиент чата с небольшой историей, если таковая была). Вы будете использовать последнее сообщение в списке, чтобы получить новое значение для GetMessagesSince.

Теперь с некоторой магией параллелизма вы можете реализовать длинный опрос.Вы также можете добавить даты в сообщения, чтобы люди знали, сколько лет разговорам.Вы также можете добавить разные группы сообщений, создав Карты вашей очереди в чате, например: Map<String, List<Map<int, String>>>, где я выбрал строку в этом случае, чтобы идентифицировать вашу комнату чата.

Если вы серьезно, я мог бы даже создать демо (это проще, чем кажется).

...