Спрошу нетипичный вопрос. Представьте, что у вас есть сокет-соединение с каким-то бэком, и какой-то свой протокол общения по нему. Набор команд, логика их обработки, где-то автоматическая, где-то по событию от пользователя.
Видны сразу понятные части для такой штуки: транспорт для сокета и декодирования сообщений, модель команд, парсер-сериализатор, и стейт-машина со всей логикой. Вопрос: есть ли какой-то стандартизированный подход к проектированию такой штуки? Типа стандартного паттерна или фреймворка, готовый каркас (или рисунок каркаса), где нужно просто каждую часть правильно реализовать?
наверное, не совсем ответ на вопрос, но:
WebSocketStateContext - содержит в себе текущее состояние и Flow/Flowable событий, умеет передовать входящие сообщения и всякие подключиться/отключиться
WebSocketState (Connected, Diconnected, Connecting…) - умеет обрабатывать только те команды, которые допустимы в текущем состоянии (подключить или отключить/отправить
WebSocketEvent - все, что вылетает из сокета - сообщение, события подключения/отключения
имхо, парсер должен лежать где-то в WebSocketStateContext и трансформировать сырые данные в какие-то классы/объекты