上手指南
从 go get 到五种交互模式跑通一遍,每段代码对照真实 API,可直接运行。
开始使用
自定义二进制帧协议承载 JSON,一条 TCP 连接上跑请求/响应、流式、双工、单向、发布/订阅五种交互。心跳、断线恢复、压缩加密、credit 背压都在协议内,不靠应用层自造。Go 参考实现纯标准库、零第三方依赖;协议规范语言无关,其他语言实现规划中。
go get github.com/cuihairu/jsonstreamc, _ := jsonstream.Dial(ctx, addr, jsonstream.DefaultConfig())
m, _ := c.Request(ctx, "math.add", map[string]int{"a": 2, "b": 40}) // 请求/响应
s, _ := c.Stream(ctx, "range", map[string]int{"n": 100}) // 流式
defer s.Cancel()
sub, _ := c.Subscribe(ctx, "ticks", func(m *jsonstream.Message) error { return nil })
_ = c.Publish(ctx, "metrics", map[string]float64{"cpu": 0.42}) // client → server压缩/加密/背压都是参数化开关,握手协商后生效(双方都开才启用):
cfg := jsonstream.DefaultConfig()
cfg.Compress = true // ≥64B 载荷走 flate
cfg.Encrypt = true // AES-256-GCM,先压后加
cfg.Key = key32 // 32 字节预共享密钥
cfg.Credit = 64 // 连接级信用窗口,生效值取双方最小库与协议的全貌:上手与五种模式见 getting-started.md,全部公开 API 见 api.md,帧/变换/端到端的基准实测见 benchmarks.md,架构与取舍见 DESIGN.md,协议逐字段定义见 protocol.md,帧类型/Flags/错误码/配置参数的速查表在 glossary.md,与 WebSocket 的能力边界见 websocket-comparison.md,构建/测试/部署的常见问题见 faq.md,最近改动的逐条摘要在 changelog.md。