在线网页 http://124.221.30.46:18000/
本项目已更好支持二次开发为目标 可通过各种自定义事件去完成相应功能
看飞哥的单机TCP百万并发 好奇有数据情况的表现 因此国庆准备试一试有数据的情况
- 性能测试 单机[2核4G机器]并发10w+ 每日保存4亿+经纬度 详情
- 支持JT808(2011/2013/2019) JT1078(需要其他流媒体服务)
- 支持分包和自动补传 支持主动安全扩展(苏标 黑标 广东标 湖南标 四川标)
特点 |
描述 |
安全可靠 |
核心协议部分测试覆盖率100% 纯原生go实现(不依赖任何库) |
简洁优雅 |
核心代码不到1000行 不使用任何锁 仅使用channel完成 |
易于扩展 |
方便二次开发 有适配任意jt808服务 分布式集群等案例 |
服务名 |
描述 |
Go Report Card |
shared |
jt808和1078指令常量 |
|
protocol |
jt808和1078协议实现 |
|
service |
jt808服务端 |
|
adapter |
jt808适配器 |
|
attachment |
jt808附件服务 |
|
terminal |
jt808客户端模拟器 |
|
终端连接到web服务 通过http下发指令给终端
真实案例 根据壹品信息技术有限公司对接中农云设备修改
真实设备连接到适配器 适配器产生多个模拟设备连接多个808服务
默认支持苏标 可自定义各事件扩展(开始、传输进度、补传情况、完成、退出等事件)
jt808服务端 模拟器 消息队列 数据库都运行在2核4G腾讯云服务器
测试每秒保存5000条的情况 约5.5小时保存了近1亿的经纬度
使用nginx把终端分配到多个808服务上 下发数据使用广播
存在则回复终端应答到新主题 不存在则忽略
使用自定义模拟器 可以轻松生成测试用的报文 有详情描述
快速开始 完整项目例子
package main
import (
"github.com/cuteLittleDevil/go-jt808/attachment"
"github.com/cuteLittleDevil/go-jt808/service"
"github.com/cuteLittleDevil/go-jt808/shared/consts"
"log/slog"
"os"
)
var goJt808 *service.GoJT808
func init() {
logger := slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{
AddSource: true,
Level: slog.LevelDebug,
ReplaceAttr: nil,
}))
slog.SetDefault(logger)
attach := attachment.New(
attachment.WithNetwork("tcp"),
attachment.WithHostPorts("0.0.0.0:10001"),
attachment.WithActiveSafetyType(consts.ActiveSafetyJS), // 默认苏标 支持黑标 广东标 湖南标 四川标
attachment.WithFileEventerFunc(func() attachment.FileEventer {
return &meFileEvent{} // 自定义文件处理 开始 结束 当前进度 补传 完成等事件
}),
)
go attach.Run()
}
func main() {
goJt808 = service.New(
service.WithHostPorts("0.0.0.0:808"),
service.WithNetwork("tcp"),
service.WithCustomTerminalEventer(func() service.TerminalEventer {
return &meTerminal{} // 自定义终端事件 终端进入 离开 读写报文事件
}),
service.WithCustomHandleFunc(func() map[consts.JT808CommandType]service.Handler {
return map[consts.JT808CommandType]service.Handler{
consts.T0200LocationReport: &meLocation{}, // 自定义0x0200位置解析等
}
}),
)
goJt808.Run()
}
- 目前(2024-10-01)前的go语言版本个人觉得都不好因此都不推荐参考 推荐参考资料如下
项目名称 |
语言 |
日期 |
Star 数 |
链接 |
JT808 |
C# |
2024-10-01 |
534 |
JT808 C# |
jt808-server |
Java |
2024-10-01 |
1.4k+ |
JT808 Java |
- java模拟器(QQ群下载 373203450)
- go模拟器 详情点击
详情点击
服务端版本 |
场景 |
并发数 |
服务器配置 |
服务器使用资源情况 |
描述 |
v0.3.0 |
连接数测试 |
10w+ |
2核4G |
120%+cpu 1.7G内存 |
10.0.16.5上开启服务端和模拟器 10.0.16.14机器上开启模拟器 |
详情点击
- save进程丢失了部分数据 channel队列溢出抛弃 (测试channel队列为100)
- 保存1亿丢失826条 保存4.32亿丢失1216条(分两次测试)
服务端版本 |
客户端 |
服务器配置 |
描述 |
v0.3.0 |
1w go模拟器 |
2核4G |
每秒5000 一共保存经纬度1亿 实际保存99999174 成功率99.999% |
服务 |
cpu |
内存 |
描述 |
server |
35% |
180.4MB |
808服务端 |
client |
23% |
196MB |
模拟客户端 |
save |
18% |
68.8MB |
存储数据服务 |
nats-server |
20% |
14.8MB |
消息队列 |
taosadapter |
37% |
124.3MB |
tdengine数据库适配 |
taosd |
15% |
124.7MB |
tdengine数据库 |
序号 |
消息 ID |
完成情况 |
测试情况 |
消息体名称 |
2019 版本 |
2011 版本 |
1 |
0x0001 |
✅ |
✅ |
终端通用应答 |
|
|
2 |
0x8001 |
✅ |
✅ |
平台-通用应答 |
|
|
3 |
0x0002 |
✅ |
✅ |
终端心跳 |
|
|
5 |
0x0100 |
✅ |
✅ |
终端注册 |
修改 |
被修改 |
4 |
0x8003 |
✅ |
✅ |
补传分包请求 |
|
被新增 |
6 |
0x8100 |
✅ |
✅ |
平台-注册应答 |
|
|
8 |
0x0102 |
✅ |
✅ |
终端鉴权 |
修改 |
|
9 |
0x8103 |
✅ |
✅ |
设置终端参数 |
修改且增加 |
被修改 |
10 |
0x8104 |
✅ |
✅ |
平台-查询终端参数 |
|
|
11 |
0x0104 |
✅ |
✅ |
查询终端参数应答 |
|
|
18 |
0x0200 |
✅ |
✅ |
位置信息汇报 |
增加附加信息 |
被修改 |
19 |
0x8201 |
✅ |
✅ |
位置信息查询 |
|
|
20 |
0x0201 |
✅ |
✅ |
位置信息查询应答 |
|
|
21 |
0x8202 |
✅ |
✅ |
临时位置跟踪控制 |
|
|
23 |
0x8300 |
✅ |
✅ |
文本信息下发 |
修改 |
被修改 |
26 |
0x8302 |
✅ |
✅ |
提问下发 |
删除 |
|
27 |
0x0302 |
✅ |
✅ |
提问应答 |
删除 |
|
49 |
0x0704 |
✅ |
✅ |
定位数据批量上传 |
修改 |
被新增 |
51 |
0x0800 |
✅ |
✅ |
多媒体事件信息上传 |
|
被修改 |
52 |
0x0801 |
✅ |
✅ |
多媒体数据上传 |
修改 |
被修改 |
53 |
0x8800 |
✅ |
✅ |
平台-多媒体数据上传应答 |
|
被修改 |
54 |
0x8801 |
✅ |
✅ |
平台-摄像头立即拍摄命令 |
修改 |
|
55 |
0x0805 |
✅ |
✅ |
摄像头立即拍摄命令应答 |
修改 |
被新增 |
序号 |
消息 ID |
完成情况 |
测试情况 |
消息体名称 |
13 |
0x1003 |
✅ |
✅ |
终端上传音视频属性 |
14 |
0x1005 |
✅ |
✅ |
终端上传乘客流量 |
15 |
0x1205 |
✅ |
✅ |
终端上传音视频资源列表 |
16 |
0x1206 |
✅ |
✅ |
文件上传完成通知 |
17 |
0x9003 |
✅ |
✅ |
平台-查询终端音视频属性 |
18 |
0x9101 |
✅ |
✅ |
平台-实时音视频传输请求 |
19 |
0x9102 |
✅ |
✅ |
平台-音视频实时传输控制 |
20 |
0x9105 |
✅ |
✅ |
平台-实时音视频传输状态通知 |
21 |
0x9201 |
✅ |
✅ |
平台-下发远程录像回放请求 |
22 |
0x9202 |
✅ |
✅ |
平台-下发远程录像回放控制 |
23 |
0x9205 |
✅ |
✅ |
平台-查询资源列表 |
24 |
0x9206 |
✅ |
✅ |
平台-文件上传指令 |
25 |
0x9207 |
✅ |
✅ |
平台-文件上传控制 |
序号 |
消息 ID |
完成情况 |
测试情况 |
消息体名称 |
1 |
0x1210 |
✅ |
✅ |
报警附件信息消息 |
2 |
0x1211 |
✅ |
✅ |
文件信息上传 |
3 |
0x1212 |
✅ |
✅ |
文件上传完成消息 |
4 |
0x9208 |
✅ |
✅ |
报警附件上传指令 |
5 |
0x9212 |
✅ |
✅ |
文件上传完成消息应答 |