- очень плохая тактика: 1 поток - 1 клиент! Используйте пулы коннектов, ну или библиотеки типа netty.
- обмен можно делать и по http/https, для этого достаточно использовать какой нибудь сервер типа tomcat или jetty или undertow....
- можно использовать библиотеки для постоения серверов и сервисов типа spring boot, javalin и иже с ними
- можно использовать например grpс
- можно обмениваться json или protobuf или avro поверх любого протокола
- можно использовать шины сообщений: actvemq, kafka, pulsar, redis....
- можно плюнуть на все и взять новомодный mosquitto и mqtt
- можно работать через websockets
Я бы начал с простого http + json или grpc, или mqtt... В тяжелых случаях kafka или pulsar
Не стал бы брать websockets, намучаетесь с клиентской частью!!!
Мои фавориты
- http + json -
https://javalin.io/ +
https://github.com/google/gson
-
https://grpc.io/
-
https://pulsar.apache.org/