websocket开发
# websocket开发
# 连接
- 方法: get
- url: /api/v1/system/common/websocket/connect
- header参数或url请求里参数:
参数 | 是否可选 | 说明 |
---|---|---|
app-code | 是 | 用户正在访问的app |
project-id | 否 | 当前正在访问的项目 |
token | 是 | 用户的token |
tenant-code | 否 | 租户号,默认default |
连接成功后,云端会回复以下格式的json:
{
"code": 200,
"msg": "成功",
"handler": {
"Traceparent": "5a21080b0d1d20a372cb9a1c61e19321",
"connectID": "29"
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
connectID 是这个连接的唯一ID,后续排查问题都需要根据这个ID来进行排查
# 请求回复结构体格式
{
"type": "up.sub",
"body": {
"code":"devicePropertyReport",
"params":{
"productID":"k0sr6A5BMbN",
"deviceName":"cB05016F7"
}
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
参数说明:
参数 | 类型 | 说明 |
---|---|---|
type | String | 请求及回复的类型由上下行(up,dowm)+具体的方法组成,如up.sub |
body | boject | 具体消息的参数 |
# 订阅消息
当应用需要订阅某个消息的时候,可以通过以下命令来进行订阅,订阅成功之后,当产生所订阅的消息会直接推送给客户端
# 请求
{
"type": "up.sub",
"body": {
"code":"devicePropertyReport",
"params":{
"productID":"k0sr6A5BMbN",
"deviceName":"cB05016F7"
}
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
参数说明:
参数 | 类型 | 说明 |
---|---|---|
type | String | 固定为 up.sub |
body | boject | 具体消息的参数 |
body.code | string | 订阅的 |
body.params | boject | 订阅的参数 |
# 回复
{
"code": 200,
"msg": "成功",
"type": "down.subRet"
}
1
2
3
4
5
2
3
4
5
参数说明:
参数 | 类型 | 说明 |
---|---|---|
type | String | 固定为 down.subRet |
code | int | 错误码, 200为成功 |
msg | String | 消息 |
# 具体的订阅说明
- 物联网相关上报
code说明:
code | 说明 |
---|---|
devicePropertyReport | 设备上报订阅 |
devicePublish | 设备发布消息 |
deviceActionReport | 设备行为消息 |
deviceConn | 设备连接消息 |
deviceOtaReport | 设备ota消息推送 |
params说明:
- 订阅具体属性
{
"productID": "xxx",
"deviceName":"xxx",
"identifier": "xxx"
}
1
2
3
4
5
2
3
4
5
参数 | 类型 | 说明 |
---|---|---|
productID | String | 产品名称 |
deviceName | String | 设备名称 |
identifier | String | 属性的ID |
- 订阅设备所有属性
{
"productID": "xxx",
"deviceName":"xxx",
}
1
2
3
4
2
3
4
参数 | 类型 | 说明 |
---|---|---|
productID | String | 产品名称 |
deviceName | String | 设备名称 |
- 订阅项目下所有设备 如果设备数量过多可能会导致推送消息过多,需要慎用
{
"projectID": "xxx"
}
1
2
3
2
3
参数 | 类型 | 说明 |
---|---|---|
projectID | String | 项目ID |
- 订阅某个区域下所有设备 如果设备数量过多可能会导致推送消息过多,需要慎用
{
"projectID": "xxx",
"areaID": "xxx"
}
1
2
3
4
2
3
4
参数 | 类型 | 说明 |
---|---|---|
projectID | String | 项目ID |
areaID | String | 区域ID |
# 推送消息体说明
- 设备上报订阅 - devicePropertyReport
{
"device": {
"productID": "产品id",
"deviceName":"设备名称"
},
"timestamp":"毫秒时间戳",
"identifier": "推送属性的标识符",
"param":{
"power_switch":1,
"color":1,
"brightness":32
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
参数 | 类型 | 说明 |
---|---|---|
device | JSON | 设备信息 |
device.productID | String | 产品id |
device.deviceName | String | 设备名称 |
timestamp | String | 毫秒时间戳 |
identifier | String | 推送属性的标识符 |
param | any | 上报的参数,如果是json类型为对象 |
param.power_switch | Boolean | 布尔型属性的值一般为0或1 |
param.color | Enum | 枚举整型属性的值为整数值,数值类型填写错误或超过枚举项定义范围出现406返回码,表示物模型格式校验错误 |
param.brightness | Integer | 整数型属性的值为整数值,数值类型填写错误或超过数值范围会出现406返回码,表示物模型格式校验错误 |
- 设备发布消息 - devicePublish
{
"productID": "xxx",
"deviceName":"xxx",
"content": "xxx",
"topic":"xxx",
"action": "xxx",
"timestamp":"xxx",
"requestID": "xxx",
"traceID":"xxx",
"resultCode": 200,
"respPayload":"xxx"
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
参数 | 类型 | 说明 |
---|---|---|
productID | String | 产品id |
deviceName | String | 设备名称 |
content | String | 具体信息 |
topic | String | 主题 |
action | String | 操作类型 |
timestamp | String | 操作时间, |
requestID | String | 请求ID |
traceID | String | 服务器端事务id |
resultCode | String | 请求结果状态,200为成功 |
respPayload | String | 返回的内容 |
- 设备行为消息 - deviceActionReport
{
"device": {
"productID": "产品id",
"deviceName":"设备名称"
},
"msgToken": "xx",
"timestamp":"xx",
"actionID": "xx",
"params":{
"power_switch":1,
"color":1,
"brightness":32
},
"code": 200,
"msg":"xxx",
"dir": "up",
"reqType":"req"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
参数 | 类型 | 说明 |
---|---|---|
device | JSON | 设备信息 |
device.productID | String | 产品id |
device.deviceName | String | 设备名称 |
timestamp | String | 毫秒时间戳 |
actionID | String | 行为的标识符 |
params | JSON | JSON结构内为设备上报的属性值 |
params.power_switch | Boolean | 布尔型属性的值一般为0或1 |
params.color | Enum | 枚举整型属性的值为整数值,数值类型填写错误或超过枚举项定义范围出现406返回码,表示物模型格式校验错误 |
params.brightness | Integer | 整数型属性的值为整数值,数值类型填写错误或超过数值范围会出现406返回码,表示物模型格式校验错误 |
code | String | 200为成功 |
msg | String | 消息 |
dir | String | 请求方向 up:设备请求云端 down:云端请求设备 |
reqType | String | 请求类型 req resp |
- 设备连接消息 - deviceConn
{
"device": {
"productID": "产品id",
"deviceName":"设备名称"
},
"timestamp":"毫秒时间戳",
"status": 1
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
参数 | 类型 | 说明 |
---|---|---|
device | JSON | 设备信息 |
device.productID | String | 产品id |
device.deviceName | String | 设备名称 |
timestamp | String | 毫秒时间戳 |
status | Integer | 1:在线 2:离线 |
- 设备ota消息推送 - deviceOtaReport
{
"device": {
"productID": "产品id",
"deviceName":"设备名称"
},
"timestamp":"毫秒时间戳",
"status": 1,
"detail": "",
"step":10
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
参数 | 类型 | 说明 |
---|---|---|
device | JSON | 设备信息 |
device.productID | String | 产品id |
device.deviceName | String | 设备名称 |
timestamp | String | 毫秒时间戳 |
status | Integer | 1:在线 2:离线 |
detail | String | 详情 |
step | Integer | 当前的升级进度 0-100% -1:升级失败。-2:下载失败。-3:校验失败。-4:烧写失败。 |
上次更新: 2024/10/11, 17:14:01