Ответ: Java Sockets -> WebSockets
Если ты написал такие абстракции что нельзя подменить тип транспорта, то ты сам себе ССЗБ (если конечно это ты писал).
Есть tcp соединение, по которому идут данные (байты), ты эти байты как то интерпретируешь - ну, например, как текст-строку-json.
WebSocket - это то же самое tcp соединение, только во 1 вначале идут специальные http заголовки, и во 2 все сообщения (данные) упаковываются в специальную структуру. Другими словами - твой код не должен работать с сокетами - он должен работать с чем-то абстрактным, например, Stream. Если ты работаешь с потоком тебе не важно откуда пришли данные. Может это что-то вроде TCPStream, а может и WebSocketStream (который кстати работает поверх TCPStream).
__________________
|