Как декодировать объекты, отправленные с сервера Netty, и кодировать объекты на сервере Netty в Dart - PullRequest
0 голосов
/ 17 апреля 2019

Я задал вопрос для отправки / получения с сервера netty на флаттер-клиент , но мне удалось создать соединение. Тем не менее, моя новая проблема заключается в том, что данные, отправляемые с сервера netty, являются байтовым массивом (я так или иначе верю), и я не могу понять, как декодировать байтовый массив в объект. Я все еще хотел бы получить ответ на свой первоначальный вопрос, так как ответ может быть лучшим методом, чем то, что я делаю в данный момент. Как бы я пошел от расшифровки байтового массива, отправленного с сервера netty ( код здесь ) и кодирования байтового массива? (Я использую ObjectEncoder и ObjectDecoder для netty)

1 Ответ

2 голосов
/ 17 апреля 2019

netty имеет разные кодеки для сериализации данных. По умолчанию ObjectEncoder появляется для сериализации заголовка, включая uid класса java, а затем добавляет обычную сериализацию объекта java. Маловероятно, что вы захотите реализовать аналог в Dart.

Вам нужно найти представление данных, которое вы можете генерировать / анализировать в netty и Dart. В одном крайнем случае вы можете использовать netty ByteBuf. Будет довольно ясно, как netty сериализуется в ByteBuf, и вы можете имитировать это в конце Dart, используя ByteData. С другой стороны, вы можете едва использовать сериализацию netty. Вы можете закодировать ваш Java-объект в строку JSON utf8, отправить ее, а в конце дротика просто декодировать utf8 и json. Конечно, это не дает вам компактное представление. Если вам нужно компактное представление, доступное в Java и Dart, подумайте о protobuf. * ​​1007 *

Если вы получаете две системы на двух разных языках для взаимодействия, вы должны отвечать за то, как они обе выполняют сериализацию / десериализацию. Использование netty ObjectEncoder кажется плохой идеей, так как слишком сильно зависит от внутренней сериализации Java-объектов, которая не имеет аналогов в конце Dart.

...