Сценарий: пользователь входит в клиентское программное обеспечение, которое формирует постоянное двунаправленное соединение с серверной сущностью (сервером), которая будет обрабатывать указанные пользователем задачи. Когда серверная сущность во время обработки пользовательской задачи обнаруживает ошибку или требует дальнейшего ввода данных пользователем, она уведомляет клиентское программное обеспечение и ждет, пока клиент решит, что делать. Клиентское программное обеспечение примет входные данные нового пользователя и отправит их на сервер. Серверная часть продолжается там, где она в последний раз остановилась, с вводом, указанным новым пользователем. Этот цикл обратной связи будет продолжаться до завершения обработки. Постепенно обновляемые пользовательские входные данные будут храниться на стороне сервера и быть доступными и изменяемыми из клиентского программного обеспечения. Поэтому, если клиент удаляет определенный вход, это изменение будет немедленно отражено на стороне сервера. На стороне сервера, вероятно, требуется дополнительный интерфейс для маршрутизации клиентов разных пользователей на доступные аппаратные узлы (облако) для поддержки одновременных многопользовательских задач, выполняемых на стороне сервера.
На стороне клиента я подозреваю, что для подключения к серверу используются сокеты ...
Теперь что касается сервера, я немного растерялся, потому что, похоже, есть много разных Java-серверов, таких как Jetty & Netty. Я также практикую осторожность, чтобы не пытаться изобретать здесь какие-либо колеса.
Является ли построение сервера правильным подходом? Или создать веб-сервис, который будет выполнять определенную задачу по требованию?
Я также не просто ищу подходящее для всех решение (возможно, желаемое за действительное), но и открываюсь для любого понимания моей текущей ситуации.