如何解码从netty服务器发送的对象并将对象编码到Dart中的netty服务器

问题描述 投票:0回答:1

我已经制作了question to send/receive from netty server to flutter client,但我已经成功创建了连接。但是,我的新问题是从netty服务器发送的数据是一个字节数组(我相信无论如何),我似乎无法弄清楚如何将字节数组解码为对象。我仍然希望回答原来的问题,因为答案可能是比我现在所做的更好的方法。我如何解密从netty服务器(code here)发送的字节数组并编码字节数组? (我正在使用ObjectEncoder和ObjectDecoder for netty)

dart flutter netty
1个回答
2
投票

netty有不同的编解码器用于序列化数据。默认的ObjectEncoder似乎序列化包含java类uid的头,然后附加一个普通的java对象序列化。你不太可能想要在Dart中实现对应物。

您需要找到可以在netty和Dart中生成/解析的数据表示。在一个极端你可以使用netty ByteBuf。很明显netty是如何序列化到ByteBuf的,你可以使用ByteData在Dart端模仿它。在另一个极端,您可能几乎不使用netty的序列化。您可以将Java对象编码为utf8 JSON字符串,然后发送,并在dart端简单地解码utf8和json。当然,这并不能为您提供紧凑的电线表示。如果你想要一个Java和Dart中可用的紧凑表示,请考虑protobuf。

如果您要使用两种不同语言的两个系统进行互操作,则需要负责它们如何进行序列化/反序列化。使用netty的ObjectEncoder似乎是一个坏主意,因为它过分依赖于Java的内部对象序列化,而Dart端没有对应的序列化。

© www.soinside.com 2019 - 2024. All rights reserved.