Base128 编码流式传递二进制对象

Tags
idea
Created
Jul 14, 2020 8:37 PM

同样有非 ASCII  字符,尺寸又不如 Binary strings

用例:

  • WebView 和 WebPage 传递对象
  • WebExtension 和 WebPage 传递对象

性能:

  • 相比直接传递二进制数据会有多余的编码,解码,内存复制操作
  • 编码时字符串的拼接
  • 用 Base128 编码,数据膨胀 8/7 = 1.143 倍

协议:

chunk:<streamid: 7bit><data: 56 * 1024 * 8 / 7 bit>

数据小于预期长度时视为结束,等于时在新 chunk 中结束

// 传 56K 数据大约 64K 字符串数据

// 无重传机制,不校验

实现:

  • Web 发送,接收(rust -> wasm)
  • Flutter 发送,接收
SuperMade with Super