Собрать сервер для двунаправленной системы обратной связи на стороне клиента / сервера на Java?

Сценарий: пользователь входит в систему клиентского программного обеспечения, которое формирует постоянное двунаправленное соединение с серверной сущностью (сервером), которая будет обрабатывать заданные пользователем задачи. Когда серверная сущность во время обработки пользовательской задачи обнаруживает ошибку или требует дальнейшего ввода данных пользователем, она уведомляет клиентское программное обеспечение и ждет, пока клиент решит, что делать. Клиентское программное обеспечение примет входные данные нового пользователя и отправит их на сервер. Серверная часть продолжается там, где она в последний раз остановилась, с вводом, указанным новым пользователем. Этот цикл обратной связи будет продолжаться, пока не закончится обработка. Постепенно обновляемые пользовательские входные данные будут храниться на стороне сервера и доступны и модифицируются из клиентского программного обеспечения. Поэтому, если клиент удаляет определенный вход, это изменение будет немедленно отражено на стороне сервера. On the serverside, an extra interface is probably required to route different user's clients to available hardware nodes (cloud) to support concurrent multi-user tasks running on the serverside.

On the client side, I suspect using sockets to connect to the server...

Now for the server, I am a little lost because there seems to be many different Java servers like Jetty & Netty. I am also practicing caution in order to not try and reinvent any wheels here.

Is building a server the right approach? or Build a webservice that will complete a specific task on demand?

I am also not just looking for a one size fits all solution (wishful thinking probably) but open to any insights on my current situation.

1 ответ

Решение

Netty предоставит вам то, что вам нужно, без необходимости заново изобретать сокет-сервер. Тем не менее, я хотел бы убедиться, что вам действительно требуется двунаправленная связь в реальном времени между клиентом и сервером. Если вы можете переделать проблему так, что связь клиент-сервер не должна осуществляться в режиме реального времени, то такие вещи, как веб-сервисы RESTful, становятся возможными и (по моему опыту) гораздо менее сложными и подвержены ошибкам.

Другие вопросы по тегам