2.TDDS Server消息

# 2.1. TDDS Server消息结构 TDDS Server API基于WebSocket构建,可发送二进制消息。为了保证数据收发时的可靠性,方便TDDS与TDDS Server以及TDDS Console之间的通信,设计了如下消息结构: ![TddsSvcMsg.jpg](https://cos.easydoc.net/18319241/files/l0hkyzgp.jpg) 使用示例如下,假如有如下JSON数据需要发送: ``` {"type":100,"message":"Hello TDDS."} ``` 以**UTF8编码转换成byte数组,此数组长度为36**: ``` 0x7B, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3A, 0x31, 0x30, 0x30, 0x2C, 0x22, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3A, 0x22, 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x54, 0x44, 0x44, 0x53, 0x2E, 0x22, 0x7D ``` 将**长度36**转换成16位bit,即两个byte: ``` 0x00,0x24 ``` 将上述两部分数据按消息结构组合,先放置长度区,后放置数据区,形成**长度为38的最终数据**: ``` 0x00,0x24,0x7B, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3A, 0x31, 0x30, 0x30, 0x2C, 0x22, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3A, 0x22, 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x54, 0x44, 0x44, 0x53, 0x2E, 0x22, 0x7D ``` 将上述最终数据通过WebSocket协议发送至相应接口即可。 **注意**上述示例中JSON字符串没有中文等其它语言字符,因此其长度与byte数组长度一致。但实际使用时JSON字符串可能包含其它非英文字符,因此需要注意长度区中的两个byte表示的长度必须是JSON字符串转换成UTF8编码后的byte数组的长度。 # 2.2. TDDS Server消息的JSON结构 TDDS Server消息由JSON字符串表示。JSON结构如下: ``` { "type": 0, "message": "Some messages.", "data": "Some data", "time": "2022/1/5 16:24:53" } ``` 表示TDDS Server消息的JSON对象共有4个字段,具体含义如下: * **type**:表示此消息的类型; * **message**:此消息的内容或其它说明; * **data**:要在此消息中包含的数据,必须是可解析的JSON字符串; * **time**:创建此消息的时间,格式如以上示例所示。 不同的消息类型表示了不同的请求或请求结果。在请求数据或解析请求结果时,需要根据不同的消息类型,在data字段解析或封装数据。具体的使用示例可见具体的API介绍章节。 # 2.3. API URL 为了方便TDDS和TDDS Console使用,TDDS Server提供的API全部基于WebSocket协议,基本URL格式如下: ### ws://[server_ip]:[service_port]/[api_url] ### 其中**server_ip**和**service_port**需根据实际情况填写。 **api_url**需要根据以下各个API章节介绍的使用方式构造。 # 2.4 消息类型 为了尽可能减少TDDS Server在通信时的参与程度,设计了以下几种固定的消息类型,实际使用时应包括但不仅限于下表所列类型。如需使用其它类型,可根据具体的功能目的由数据长传和下载方共同约定类型值和携带参数。 **消息类型说明表** |系统类消息类型值|类型说明|携带参数 |---|---|--- |-1|失败|无 |0|成功|依具体使用接口而定 |1|上传方上线|无 |2|上传方下线|无 |3|下载方上线|无 |4|下载方下线|无 |**控制类消息类型** |10|启动TDDS|无 |11|关闭TDDS|无 |12|重新启动TDDS|无 |13|TDDS是否正在检测|True表示正在检测,False表示未在检测中 |14|摄像头运行状态| |20|获取所有模型ID|包含所有模型ID的一个列表 |21|获取当前运行参数|运行参数字典 |22|设置当前运行参数|运行参数字典 |23|获取检测合格率|合格率百分值 |24|获取类别统计|类别统计列表 |25|获取实时检测帧率|实时检测帧率 |**服务类消息类型** |100|获取服务在线状态|无 |101|获取TDDS在线状态|无 |102|获取Console在线状态|无 |103|获取消息上传方在线状态|无 |104|获取消息下载方在线状态|无 |105|获取所有在线通道ID|无 |106|获取某个在线通道的图像格式|在线通道的ID |107|获取所有在线通道的图像格式|无 |108|获取摄像头状态|摄像头状态列表