Нужно написать клиент сервер с поддержанием "живых" сессий, то есть примерно такой архитектуры:
Сервер:- Должен быть много поточным
- Должен принимать и не закрывать соединения от клиентов
- Отдельный поток на сервере должен иметь возможность "перечислить" подключенных клиентов и отправить произвольный byte[] любому из них, не закрывая после соединение
- Должен принимать byte[] от клиентов и уметь определять от кого из клиентов получено сообщение
Клиент:- Должен подключаться к серверу и не закрывать соединение
- Должен уметь отправлять сообщение byte[] серверу и получать от него сообщения в том же соединении
Пробовал реализовать с udp сокетами и remoting, оно работает и достаточно быстро, но получился в итоге гиганского размера костыль, такое решение мне не нравится чисто эстетически.
Все примеры с tcp сокетами подходят для временных подключений, которые закрываются сразу после передачи и не пригодны для удержания сессий и постоянного взаимодействия. Как лучше было бы подобное реализовать?