代码之家  ›  专栏  ›  技术社区  ›  escos

Spring集成-哪种反序列化器用于只有一个起始字节的无限字节流(作为消息的一部分)

  •  0
  • escos  · 技术社区  · 7 年前

    我们正在尝试从TCP读取enOcean数据。

    enOcean ESP3消息的协议说明如下:

    一旦同步-识别字节(值0x55),随后的4字节头与相应的CRC8H值进行比较。 如果结果匹配,则同步-字节正确。因此,ESP3数据包被正确检测,随后的数据将被传递。 如果标头与CRC8H不匹配,则值0x55不对应于同步-字节将拾取数据流中的下一个0x55,并重复验证。

    到目前为止,我们使用的设备(客户端)在很短的时间内(几毫秒)收到大量消息后自动关闭与服务器的连接。因此,我们能够使用简单的ByteArrayRawSerializer。每当连接关闭时,我们都会获得字节数组,读取数据,找到所有同步字节,并能够解释消息。

    现在有一种新设备将连接保持很长时间(几分钟),因此我们需要另一种方式从流中读取数据。因为消息字节没有结尾,同步字节0x55是消息的一部分,ByteArrayLengthHeaderSerializer也不适合我们,我们想知道我们可以使用什么:

    是否有任何反序列化程序可用于我们的场景?是否可以编写我们自己的反序列化程序(在此特定场景中)?还是我们应该遵循另一种(更简单的)方式?也许使用拦截器?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Gary Russell    7 年前

    您需要编写一个自定义反序列化程序。