Repository navigation
JsonStream 第一个版本:自定义二进制帧协议承载 JSON,一条 TCP 连接上跑五种交互——请求/响应、流式、双工、单向、发布/订阅。心跳、断线恢复、压缩加密、credit 背压都在协议内,不靠应用层自造。
安装
go get github.com/cuihairu/jsonstream@v0.1.0Go ≥ 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 注入点、其他语言实现。