Skip to content

v0.1.0

Latest

Choose a tag to compare

@cuihairu cuihairu released this 28 Sep 15:57
· 34 commits to main since this release

JsonStream 第一个版本:自定义二进制帧协议承载 JSON,一条 TCP 连接上跑五种交互——请求/响应、流式、双工、单向、发布/订阅。心跳、断线恢复、压缩加密、credit 背压都在协议内,不靠应用层自造。

安装

go get github.com/cuihairu/jsonstream@v0.1.0

Go ≥ 1.24,纯标准库,零第三方依赖。

协议

  • 14B 定长帧头 + 32 位大端长度前缀,解码端固定「读完头 → 两次 ReadFull」,可 fuzz、可任意丢帧重入
  • Stream ID 奇偶划分发起方,跨重连单调
  • 帧式 PING/PONG 心跳 + 空闲超时
  • 断线恢复:会话保留 + 重放,at-least-once
  • flate 压缩(≥64B 载荷)+ AES-256-GCM 加密,先压后加,握手协商、双方都开才启用
  • credit 背压按条数计,连接级,默认关闭
  • 大消息分片:FRAGMENT 帧型(0x10)+ FlagFragmented 位已定稿,MaxMessageSize 64MiB / 并发重组 64 / 停滞 1min 三道防线;Go 实现落地中

协议规范:docs/protocol.md——帧格式逐字段、握手、错误码表齐全,语言无关,照着写就能互通。

实现质量(2026-09-28 口径)

  • 库包语句覆盖率 100%(812/812,CI 门禁),两个示例包同为 100%
  • 198 测试 + 9 基准 + 5 fuzz 靶
  • staticcheck、vet、gofmt、revive、gosec、gocritic、govulncheck、nilness 全部零告警,均纳入 CI 门禁

文档

https://cuihairu.github.io/jsonstream/

上手指南、API 参考、基准实测、协议规范、WebSocket 对照、TCP 横评、架构讲解、FAQ 共十一页。

后续

分片传输的 Go 实现、客户端 TLS 注入点、其他语言实现。