{"id":17435676,"url":"https://github.com/cutelittledevil/go-jt808","last_synced_at":"2025-08-03T16:30:46.273Z","repository":{"id":257814284,"uuid":"868437632","full_name":"cuteLittleDevil/go-jt808","owner":"cuteLittleDevil","description":"jt808服务端 单机[2核4G]并发10w+ 100%测试覆盖率 例子丰富(每日保存亿+经纬度[2核4G] 平台下发数据获取回复 主动安全协议 JT1078流媒体播放等) ","archived":false,"fork":false,"pushed_at":"2024-12-03T12:05:05.000Z","size":5606,"stargazers_count":19,"open_issues_count":1,"forks_count":9,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-12-03T12:39:09.441Z","etag":null,"topics":["go","jt1078","jt808"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cuteLittleDevil.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-06T11:44:54.000Z","updated_at":"2024-12-03T12:05:09.000Z","dependencies_parsed_at":null,"dependency_job_id":"fc75a8e1-0135-4730-938b-9bed663b9794","html_url":"https://github.com/cuteLittleDevil/go-jt808","commit_stats":{"total_commits":31,"total_committers":2,"mean_commits":15.5,"dds":"0.032258064516129004","last_synced_commit":"05639f1becf86db640dc5fd17b8f736853515967"},"previous_names":["cutelittledevil/go-jt808"],"tags_count":49,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuteLittleDevil%2Fgo-jt808","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuteLittleDevil%2Fgo-jt808/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuteLittleDevil%2Fgo-jt808/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuteLittleDevil%2Fgo-jt808/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cuteLittleDevil","download_url":"https://codeload.github.com/cuteLittleDevil/go-jt808/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228552380,"owners_count":17935803,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","jt1078","jt808"],"created_at":"2024-10-17T10:01:00.525Z","updated_at":"2025-08-03T16:30:46.246Z","avatar_url":"https://github.com/cuteLittleDevil.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"![MIT License](https://img.shields.io/github/license/cuteLittleDevil/go-jt808)\n[![Go Doc](https://godoc.org/github.com/cuteLittleDevil/go-jt808?status.svg)](https://pkg.go.dev/github.com/cuteLittleDevil/go-jt808#readme-jt808)\n[![Perf](https://img.shields.io/badge/perf-save-blue.svg)](https://github.com/cuteLittleDevil/go-jt808/blob/main/example/simulator/README.md)\n[![WEB](https://img.shields.io/badge/example-web-red.svg)](https://github.com/cuteLittleDevil/go-jt808/tree/main/example/web#web)\n[![API](https://img.shields.io/badge/web%20doc-apifox-red.svg)](https://vsh9jdgg5d.apifox.cn/)\n[![codecov](https://codecov.io/github/cuteLittleDevil/go-jt808/graph/badge.svg?token=KZXKKIJUSA)](https://codecov.io/github/cuteLittleDevil/go-jt808)\n[![Go Report Card](https://goreportcard.com/badge/github.com/cuteLittleDevil/go-jt808/protocol)](https://goreportcard.com/report/github.com/cuteLittleDevil/go-jt808/protocol)\n[![build status](https://github.com/cuteLittleDevil/go-jt808/actions/workflows/ci.yml/badge.svg)](https://github.com/cuteLittleDevil/go-jt808/actions/workflows/ci.yml)\n\n# go-jt808\n\n- 设计说明 https://dkpt1fpoxb.feishu.cn/docx/FUlPda09roSnN0x7SJAc7yPbnke\n\n``` txt\n 本项目已更好支持二次开发为目标 可通过各种自定义事件去完成相应功能\n 看飞哥的单机TCP百万并发 好奇有数据情况的表现 因此国庆准备试一试有数据的情况\n\n```\n\n---\n- 性能测试 单机[2核4G机器]并发10w+ 每日保存4亿+经纬度 [详情](./README.md#save)\n- 支持JT808(2011/2013/2019) JT1078(需要其他流媒体服务)\n- 支持分包和自动补传 支持主动安全扩展(苏标 黑标 广东标 湖南标 四川标)\n\n| 特点  |   描述   |\n| :---:   | -------- |\n|  安全可靠 | 核心协议部分测试覆盖率100% 纯原生go实现(不依赖任何库)  |\n|  简洁优雅 | 核心代码不到1000行 不使用任何锁 仅使用channel完成  |\n|  易于扩展 | 方便二次开发 有适配任意jt808服务 分布式集群等案例  |\n\n| 包名 |      描述       | Go Report Card |\n|----------|--------------------|-----|\n| shared | jt808和1078指令常量 | [![Go Report Card](https://goreportcard.com/badge/github.com/cuteLittleDevil/go-jt808/shared)](https://goreportcard.com/report/github.com/cuteLittleDevil/go-jt808/shared) |\n| protocol | jt808和1078协议实现 | [![Go Report Card](https://goreportcard.com/badge/github.com/cuteLittleDevil/go-jt808/protocol)](https://goreportcard.com/report/github.com/cuteLittleDevil/go-jt808/protocol) |\n| service | jt808服务端 | [![Go Report Card](https://goreportcard.com/badge/github.com/cuteLittleDevil/go-jt808/service)](https://goreportcard.com/report/github.com/cuteLittleDevil/go-jt808/service) |\n| adapter | jt808适配器 | [![Go Report Card](https://goreportcard.com/badge/github.com/cuteLittleDevil/go-jt808/adapter)](https://goreportcard.com/report/github.com/cuteLittleDevil/go-jt808/adapter) |\n| attachment | jt808附件服务 | [![Go Report Card](https://goreportcard.com/badge/github.com/cuteLittleDevil/go-jt808/attachment)](https://goreportcard.com/report/github.com/cuteLittleDevil/go-jt808/attachment) |\n| terminal | jt808客户端模拟器 | [![Go Report Card](https://goreportcard.com/badge/github.com/cuteLittleDevil/go-jt808/terminal)](https://goreportcard.com/report/github.com/cuteLittleDevil/go-jt808/terminal) |\n| gb28181 | gb28181客户端 | [![Go Report Card](https://goreportcard.com/badge/github.com/cuteLittleDevil/go-jt808/gb28181)](https://goreportcard.com/report/github.com/cuteLittleDevil/go-jt808/gb28181) |\n\n---\n\n## 常见案例\n\n### 1. 真实项目对接 [apifox文档](https://vsh9jdgg5d.apifox.cn/) [web详情](./example/web) [releases下载](https://github.com/cuteLittleDevil/go-jt808/releases)\n``` txt\nweb例子在线网页 http://124.221.30.46:18000/\n真实案例 根据壹品信息技术有限公司对接中农云设备修改\n```\n\n### 2. jt1078视频 [详情](./example/jt1078/README.md)\n\n``` txt\n平台下发0x9101等指令 模拟器开始推流等动作\n```\n\n| 流媒体 | 语言 | 描述       | 说明 |\n|----------|-----|-------------------|-----|\n| rtvs | 不开源\u003cbr/\u003e 可使用  | 在线测试页面 https://go-jt808.online:44300/index.html \u003cbr/\u003e 点击实时视频(0x9101)按钮播放| [详情点击](./example/jt1078/README.md#rtvs)  |\n| lal | go  | 在线播放地址 http://go-jt808.online:8080/live/1001_1.flv | [详情点击](./example/jt1078/README.md#lal)  |\n| sky-java | java  | 需要部署后 HTTP请求 10秒内拉流 参考格式如下 \u003cbr/\u003e http://222.244.144.181:7777/video/1001-1-0-0.live.mp4 | [详情点击](./example/jt1078/README.md#sky-java)  |\n| monibuca | go  | 对讲示例 https://go-jt808.online:12000 | [详情点击](https://github.com/cuteLittleDevil/m7s-jt1078)  |\n| ZLMediaKit | c++  | 对讲测试 https://go-jt808.online/static/?type=push \u003cbr/\u003e http://go-jt808.online:80/rtp/000000001003_1_0_0.live.mp4 | [详情点击](./example/jt1078/README.md#zlm)  |\n\n### 3. jt808模拟gb28181客户端 [gb28181使用](./gb28181/example_test.go) [jt1078转ps流](./gb28181/internal/stream/jt1078_to_gb28181.go)\n``` txt\n原: 设备连接到原808服务\n现: 设备连接到适配器 适配器产生两个模拟链接 一个连接到原808服务 保证不影响原服务\n另一个连接到gb28181模拟服务 产生一个gb28181客户端 (目前仅支持注册 目录查询 点播[jt1078转ps流])\n```\n\n| 信令服务 | 流媒体 | 在线测试  |  说明 |\n|----------|-----|-------------------| --- |\n| monibuca | monibuca  | http://101.35.2.3:12079/#/0/device/gb28181 | [详情](./example/jt808_to_gb28181/README.md) |\n| gb28181 | ZLMediaKit  |   | [详情](./example/jt808_to_gb28181/README.md#gb28181) |\n| wvp-GB28181-pro | ZLMediaKit  |   | [详情](./example/jt808_to_gb28181/README.md#wvp) |\n\n- 参考配置 [请点击](./example/jt808_to_gb28181/README.md#config)\n\n```\ndocker pull cdcddcdc/jt808-to-gb28181:latest\n```\n```\ndocker run -d \\\n-v /home/config.yaml:/app/jt808_to_gb28181/config.yaml \\\n--network host \\\ncdcddcdc/jt808-to-gb28181:latest\n```\n\n### 4. 兼容任意808服务 [详情](./example/adapter/README.md)\n``` txt\n真实设备连接到适配器 适配器产生多个模拟设备连接多个808服务\n```\n\n### 5. 主动安全附件 [流程](./example/attachment/README.md#主动安全)\n``` txt\n默认支持苏标 可自定义各事件扩展（开始、传输进度、补传情况、完成、退出等事件）\n```\n\n### 6. 存储经纬度 [详情](./README.md#save)\n``` txt\njt808服务端 模拟器 消息队列 数据库都运行在2核4G腾讯云服务器\n测试每秒保存5000条的情况 约5.5小时保存了近1亿的经纬度\n```\n\n### 7. 分布式集群方案 [详情](./example/distributed_cluster/README.md)\n``` txt\n使用nginx把终端分配到多个808服务上 下发数据使用广播\n存在则回复终端应答到新主题 不存在则忽略\n```\n\n### 8. 平台下发指令给终端 [获取参数](./example/protocol/active_reply/main.go) [立即拍摄](./example/protocol/camera/main.go)\n``` txt\n主动下发给设备指令 获取应答的情况\n```\n\n### 9. 协议交互详情 [代码参考](./example/protocol/register/register_test.go)\n``` txt\n使用自定义模拟器 可以轻松生成测试用的报文 有详情描述\n可在apifox文档页面 使用测试环境查看报文详情 https://vsh9jdgg5d.apifox.cn/250573462e0\n```\n\n### 10. 自定义协议扩展 [代码参考](./example/protocol/custom_parse/main.go)\n``` txt\n自定义附加信息处理 获取想要的扩展内容\n```\n\n### 11. ftp例子 [详情](./example/ftp/README.md)\n``` txt\n把atop_cpu.png传输到ftp目录 (需要ftp服务)\n```\n\n[快速开始](./example/quick_start) [完整项目例子](./example/web)\n``` go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"github.com/cuteLittleDevil/go-jt808/protocol/model\"\n\t\"github.com/cuteLittleDevil/go-jt808/service\"\n\t\"github.com/cuteLittleDevil/go-jt808/shared/consts\"\n\t\"github.com/cuteLittleDevil/go-jt808/terminal\"\n\t\"log/slog\"\n\t\"net\"\n\t\"os\"\n\t\"strings\"\n\t\"time\"\n)\n\nfunc init() {\n\tlogger := slog.New(slog.NewJSONHandler(os.Stdout, \u0026slog.HandlerOptions{\n\t\tAddSource:   true,\n\t\tLevel:       slog.LevelDebug,\n\t\tReplaceAttr: nil,\n\t}))\n\tslog.SetDefault(logger)\n}\n\nfunc main() {\n\tgoJt808 := service.New(\n\t\tservice.WithHostPorts(\"0.0.0.0:808\"),\n\t\tservice.WithCustomHandleFunc(func() map[consts.JT808CommandType]service.Handler {\n\t\t\treturn map[consts.JT808CommandType]service.Handler{\n\t\t\t\tconsts.T0200LocationReport: \u0026meLocation{}, // 自定义0x0200位置解析等\n\t\t\t}\n\t\t}),\n\t)\n\tgo client(\"1001\", \"127.0.0.1:808\") // 模拟一个设备连接\n\tgoJt808.Run()\n}\n\ntype meLocation struct {\n\tmodel.T0x0200\n}\n\nfunc (l *meLocation) OnReadExecutionEvent(msg *service.Message) {\n\t_ = l.Parse(msg.JTMessage)\n\tfmt.Println(time.Now().Format(time.DateTime), l.String()) // 打印经纬度等信息\n}\n\nfunc (l *meLocation) OnWriteExecutionEvent(_ service.Message) {}\n\nfunc (l *meLocation) String() string {\n\tbody := l.T0x0200.Encode()\n\treturn strings.Join([]string{\n\t\t\"数据体对象:{\",\n\t\tfmt.Sprintf(\"\\t%s:[%x]\", l.Protocol(), body),\n\t\tl.T0x0200LocationItem.String(),\n\t\tl.AlarmSignDetails.String(),\n\t\tl.StatusSignDetails.String(),\n\t\t\"}\",\n\t}, \"\\n\")\n}\n\nfunc client(phone string, address string) {\n\ttime.Sleep(time.Second)\n\tt := terminal.New(terminal.WithHeader(consts.JT808Protocol2013, phone))\n\tlocation := t.CreateDefaultCommandData(consts.T0200LocationReport)\n\tconn, err := net.Dial(\"tcp\", address)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer func() {\n\t\t_ = conn.Close()\n\t}()\n\tticker := time.NewTicker(5 * time.Second)\n\tfor range ticker.C {\n\t\t_, _ = conn.Write(location)\n\t}\n}\n\n\n```\n\n---\n- 目前(2024-10-01)前的go语言版本个人觉得都不好因此都不推荐参考 推荐参考资料如下\n## 参考资料\n| 项目名称           | 语言   | 日期       | Star 数 | 链接                                       |\n|--------------------|--------|------------|---------|--------------------------------------------|\n| JT808           | C#     | 2024-10-01 | 534       | [JT808 C#](https://github.com/SmallChi/JT808.git) |\n| jt808-server    | Java   | 2024-10-01 | 1.4k+     | [JT808 Java](https://gitee.com/yezhihao/jt808-server.git) |\n\n- [飞哥的开发内功修炼](https://github.com/yanfeizhang/coder-kung-fu?tab=readme-ov-file)\n- [协议文档 (PDF整理)](https://gitee.com/yezhihao/jt808-server/tree/master/协议文档 )\n- [协议文档 (官网)](https://jtst.mot.gov.cn/hb/search/stdHBView?id=a3011cd31e6602ec98f26c35329e88e4)\n- [bcd转dec编码](https://github.com/deatil/lakego-admin/tree/main/pkg/lakego-pkg/go-encoding/bcd)\n- [lal流媒体文档](https://pengrl.com/lal/#/streamurllist)\n\n## 性能测试\n- java模拟器(QQ群下载 373203450)\n- go模拟器 [详情点击](./example/simulator/client/main.go#go模拟器)\n\n### 连接数测试\n[详情点击](./example/simulator/README.md#online)\n\n- 2台云服务器各开5w+客户端 总计10w+\n\n| 服务端版本  |   场景   | 并发数 |  服务器配置  | 服务器使用资源情况 |  描述  |\n| :---:   | :-------: | :--: | :------: | :-------------- | :----------------------------: |\n|  v0.3.0 | 连接数测试  | 10w+ |  2核4G | 120%+cpu 1.7G内存  | 10.0.16.5: 服务端和模拟器  \u003cbr/\u003e 10.0.16.14: 模拟器 |\n\n\u003ch3 id=\"save\"\u003e 模拟经纬度存储测试 \u003c/h3\u003e\n\n[详情点击](./example/simulator/README.md#save)\n\n- save进程丢失了部分数据 channel队列溢出抛弃 (测试channel队列为100)\n- 保存1亿丢失826条 保存4.32亿丢失1216条（分两次测试)\n\n| 服务端版本  | 客户端 |  服务器配置  |  描述  |\n| :---:   | :--: | :------: | :----------------------------: |\n|  v0.3.0 | 1w go模拟器 |  2核4G | 每秒5000 一共保存经纬度1亿  \u003cbr/\u003e 实际保存99999174 成功率99.999% |\n\n| 服务  |   cpu   | 内存 | 描述 |\n| :---:   | :-------: | :--: | :--: |\n|  server | 35% | 180.4MB | 808服务端 |\n|  client | 23% | 196MB | 模拟客户端 |\n|  save |  18% | 68.8MB | 存储数据服务 |\n|  nats-server | 20% | 14.8MB | 消息队列 |\n|  taosadapter | 37% | 124.3MB | tdengine数据库适配 |\n|  taosd | 15% | 124.7MB | tdengine数据库 |\n\n## 协议对接完成情况\n### JT808终端通讯协议\n\n| 序号  |    消息 ID    | 完成情况 |  测试情况  | 消息体名称       |  2019 版本   | 2011 版本 |\n| :---: | :-----------: | :------: | :--------: | :------------------------------------------------------------ | :----------: | :-------: |\n|   1   |    0x0001     |    ✅    |     ✅     | [终端通用应答](./protocol/model/t_0x0001.go#L12) \t\t\t\t|       \t\t|  \t\t\t|\n|   2   |    0x8001     |    ✅    |     ✅     | [平台-通用应答](./protocol/model/p_0x8001.go#L12) \t\t\t\t| \t\t\t\t|   \t\t|\n|   3   |    0x0002     |    ✅    |     ✅     | [终端心跳](./protocol/model/t_0x0002.go#L9) \t\t\t\t\t|\t\t\t    |           |\n|   4   |    0x8003     |    ✅    |     ✅     | [补传分包请求](./protocol/model/p_0x8003.go#L12)  \t\t\t\t|               |  被新增    |\n|   5   |    0x0100     |    ✅    |     ✅     | [终端注册](./protocol/model/t_0x0100.go#L14)\t\t\t\t\t|     修改\t\t|  被修改\t|\n|   6   |    0x8100     |    ✅    |     ✅     | [平台-注册应答](./protocol/model/p_0x8100.go#L13)\t\t\t\t|\t\t\t\t|           |\n|   8   |    0x0102     |    ✅    |     ✅     | [终端鉴权](./protocol/model/t_0x0102.go#L12)\t\t\t\t\t|     修改\t\t|\t\t\t|\n|   9   |    0x8103     |    ✅    |     ✅     | [平台-设置终端参数](./protocol/model/p_0x8103.go#L11)            |  修改且增加  \t|  被修改    |\n|  10   |    0x8104     |    ✅    |     ✅     | [平台-查询终端参数](./protocol/model/p_0x8104.go#L10)\t\t\t|\t\t\t\t|           |\n|  11   |    0x0104     |    ✅    |     ✅     | [查询终端参数应答](./protocol/model/t_0x0104.go#L12)\t\t\t|\t\t\t\t|           |\n|  18   |    0x0200     |    ✅    |     ✅     | [位置信息汇报](./protocol/model/t_0x0200.go#L10)\t\t\t\t | 增加附加信息 \t|  被修改\t|\n|  19   |    0x8201     |    ✅    |     ✅     | [平台-位置信息查询](./protocol/model/p_0x8201.go#L10)            |              |           |\n|  20   |    0x0201     |    ✅    |     ✅     | [位置信息查询应答](./protocol/model/t_0x0201.go#L12)             |              |           |\n|  21   |    0x8202     |    ✅    |     ✅     | [平台-临时位置跟踪控制](./protocol/model/p_0x8202.go#L12)         |              |           |\n|  23   |    0x8300     |    ✅    |     ✅     | [平台-文本信息下发](./protocol/model/p_0x8300.go#L13)            |     修改      |  被修改   |\n|  26   |    0x8302     |    ✅    |     ✅     | [平台-提问下发](./protocol/model/p_0x8302.go#L14)               |     删除      |           |\n|  27   |    0x0302     |    ✅    |     ✅     | [提问应答](./protocol/model/t_0x0302.go#L12)                   |     删除      |           |\n|  49   |    0x0704     |    ✅    |     ✅     | [定位数据批量上传](./protocol/model/t_0x0704.go#L13)\t\t\t|     修改\t\t|  被新增\t|\n|  51   |    0x0800     |    ✅    |     ✅     | [多媒体事件信息上传](./protocol/model/t_0x0800.go#L12)           |              |  被修改   |\n|  52   |    0x0801     |    ✅    |     ✅     | [多媒体数据上传](./protocol/model/t_0x0801.go#L12)               |     修改     |  被修改   |\n|  53   |    0x8800     |    ✅    |     ✅     | [平台-多媒体数据上传应答](./protocol/model/p_0x8800.go#L12)       |              |  被修改   |\n|  54   |    0x8801     |    ✅    |     ✅     | [平台-摄像头立即拍摄命令](./protocol/model/p_0x8801.go#L12)       |     修改     |           |\n|  55   |    0x0805     |    ✅    |     ✅     | [摄像头立即拍摄命令应答](./protocol/model/t_0x0805.go#L12)        |     修改     |  被新增   |\n\n### JT1078扩展\n\n| 序号  |    消息 ID     | 完成情况 \t| 测试情况 | 消息体名称 |\n| :---: | :-----------: | :------: | :--------: | :----------------------- |\n|  13   |    0x1003     |    ✅    |    ✅    | [终端上传音视频属性](./protocol/model/t_0x1003.go#L12)         |\n|  14   |    0x1005     |    ✅    |    ✅    | [终端上传乘客流量](./protocol/model/t_0x1005.go#L13)           |\n|  15   |    0x1205     |    ✅    |    ✅    | [终端上传音视频资源列表](./protocol/model/t_0x1205.go#L14)      |\n|  16   |    0x1206     |    ✅    |    ✅    | [文件上传完成通知](./protocol/model/t_0x1206.go#L12)           |\n|  17   |    0x9003     |    ✅    |    ✅    | [平台-查询终端音视频属性](./protocol/model/p_0x9003.go#L10)     |\n|  18   |    0x9101     |    ✅    |    ✅    | [平台-实时音视频传输请求](./protocol/model/p_0x9101.go#L13)     |\n|  19   |    0x9102     |    ✅    |    ✅    | [平台-音视频实时传输控制](./protocol/model/p_0x9102.go#L11)     |\n|  20   |    0x9105     |    ✅    |    ✅    | [平台-实时音视频传输状态通知](./protocol/model/p_0x9105.go#L11)  |\n|  21   |    0x9201     |    ✅    |    ✅    | [平台-下发远程录像回放请求](./protocol/model/p_0x9201.go#L13)    |\n|  22   |    0x9202     |    ✅    |    ✅    | [平台-下发远程录像回放控制](./protocol/model/p_0x9202.go#L12)    |\n|  23   |    0x9205     |    ✅    |    ✅    | [平台-查询资源列表](./protocol/model/p_0x9205.go#L13)           |\n|  24   |    0x9206     |    ✅    |    ✅    | [平台-文件上传指令](./protocol/model/p_0x9206.go#L13)           |\n|  25   |    0x9207     |    ✅    |    ✅    | [平台-文件上传控制](./protocol/model/p_0x9207.go#L12)           |\n\n### 主动安全扩展\n\n| 序号  |    消息 ID    | 完成情况 | 测试情况 | 消息体名称  |\n| :---: | :-----------: | :------: | :------: | :------------------------- |\n|   1   |    0x1210     |    ✅    |    ✅    | [报警附件信息消息](./protocol/model/t_0x1210.go#L15)     |\n|   2   |    0x1211     |    ✅    |    ✅    | [文件信息上传](./protocol/model/t_0x1211.go#L12)         |\n|   3   |    0x1212     |    ✅    |    ✅    | [文件上传完成消息](./protocol/model/t_0x1212.go#L8)       |\n|   4   |    0x9208     |    ✅    |    ✅    | [报警附件上传指令](./protocol/model/p_0x9208.go#L15)      |\n|   5   |    0x9212     |    ✅    |    ✅    | [文件上传完成消息应答](./protocol/model/p_0x9212.go#L13)   |","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcutelittledevil%2Fgo-jt808","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcutelittledevil%2Fgo-jt808","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcutelittledevil%2Fgo-jt808/lists"}