Здравствуйте!
Выбрал Java в качестве серверной части для приложения (пишу для самообучения) и не совсем понимаю, какую технологи. выбрать.
Суть проекта:
Есть много модулей - можно считать что это мини программа, которая выполняется на сервере, а результат виден на клиенте + модуль одного пользователя может обращаться к методам модуля другого пользователя через сервер.
1) Сами клиенты - андроид + веб.
2) У каждого свой набор модулей, свои настройки. Все это хранится в БД.
Получается, что здесь есть как простое: клиент попросил сервер дать ему какие JSON данные.
Там и ситуации, где один клиент хочет обратиться к другому через сервер: То есть сервер должен уметь оповестить клиентов.
Но у меня возникаю сомнения от недопонимания вопроса разновидностей сервера. Как я понял есть 2 варианта взаимного обмена: клиент постоянно слушает сервер и сервер сам оповещает клиента.
Второй вариант предпочтительней, но как я понял, требует постоянного соединения, что не очень хорошо.
В итоге получился ряд требования к серверу (поправьте, если не прав):- Прием команды и ответ JSON форматом
- Обработка модулей в потоках в "пространстве пользователя" (Хранение активного списка пользователей, модулей и настроек)
- Оповещение клиентов по требованию модулей (например оповещение в определенное время)
- Все это в многопоточном режиме (Много запросов - много ответов)
- Какая то защита от левых запросов
Подскажите, что для этого оптимальней всего использовать?