Flutter 解析 msgpack 消息内容

775 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情

MessagePack 格式

官网:msgpack.org/

It's like JSON. but fast and small.

MessagePack 是一种高效的二进制序列化格式。它允许您在 JSON 等多种语言之间交换数据,但它更快更小,小整数被编码为一个字节,典型的短字符串除了字符串本身之外只需要一个额外的字节。

手动解析 msgpack 消息

kawanet.github.io/msgpack-lit…

引入 msgpack_dart 库

官网中 Dart 的库有两个,暂时先选择 msgpack_dart

flutter pub add msgpack_dart
flutter pub get
+   msgpack_dart: ^1.0.0

代码中引入库文件

+ import "package:msgpack_dart/msgpack_dart.dart" as m2;

Uint8List 数据处理

获取第一个元素的值

buffer.first

从 index 为 1 的位置生成新的 Uint8List

Uint8List list = Uint8List.sublistView(buffer, 1);

消息内容处理的代码

      print('message buffer: $buffer');
      Uint8List list = Uint8List.sublistView(buffer, 1);
      if (1 == buffer.first) {
        Map m = m2.deserialize(list);
        print('message: $m');
      } else {
        print('message: 消息未解析');
      }