浏览器(Javascript)可以通过Web Socket API与智城云云端直接通讯。浏览器(Javascript)通过 Web Socket API,可以控制设备和实时接收设备上报的数据。
名词 | 含义 |
---|---|
client | 客户端用户,可以是Android,iOS, Web端用户,指具体使用者 |
server | 本文指的是websocket服务器,对客户端消息进行处理并反馈等 |
deviceId | 设备唯一标识 |
mid | 消息ID,同一会话中会产生不同的消息编号 |
浏览器(Javascript)通过Web Socket API与云端通讯主要包括以下的通讯过程。
协议格式仅支持JSON格式,输入与输出都是JSON格式数据。
默认请求域名为:
1
2ws:demo.machtalk.net:9000/xcloud
wss:demo.machtalk.net:9000/xcloud
所有请求,失败时会统一返回固定格式:
1 | { |
参数名称 | 说明 |
---|---|
cmd | 命令类型,此处为resp |
mid | 消息序号 |
success | 返回结果,success=0为失败 |
msg | 当success=0时,会有失败描述信息 |
1 | { |
参数名称 | 说明 |
---|---|
cmd | 命令类型,此处为login |
mid | 消息序号 |
usr | 用户名 |
pwd | 用户密码,md5加密 |
token | token是使用用户名密码登录后返回的鉴权结果中的一个字段,后期在连接session生命周期之内可以使用token来进来二次登录 |
服务器收到登录命令后,将鉴权结果信息返回给客户端。
server->client
1 | 成功时 |
参数名称 | 说明 |
---|---|
cmd | 命令类型,此处为resp |
mid | 消息序号 |
apikey | 服务器生成的一个随机数,用于其他数据接口鉴权 |
success | 鉴权结果,success=1为成功 |
token | 成功鉴权后返回的一个令牌信息,可以用来后期鉴权 |
请求消息方向:client->server
消息内容示例
1 | { |
参数名称 | 说明 |
---|---|
cmd | 命令类型,此处为hb |
data | 心跳请求数据,发送为0 |
返回说明:服务器收到心跳请求命令后,将心跳确认结果信息返回给客户端。
返回消息方向:server->client
返回内容
1 | { |
参数名称 | 说明 |
---|---|
cmd | cmd命令类型,此处为hb |
data | 心跳确认数据,发送为1 |
请求消息方向:server->client
消息内容示例
1 | { |
参数名称 | 说明 |
---|---|
cmd | 命令类型,此处为notify |
type | 消息类型 1、bind:客人绑定设备时需要推送消息给主人 2、unbind:主人解绑客人与设备绑定关系时,给客人发通知 3、transfer:主人主动转让设备权限给客人,或者主人解绑设备后,服务器主动推送给客人 4、reset:设备恢复出厂设置时,会解除该设备与所有用户的绑定关系,通知相应用户 5、message:收到留言通知 |
nick | 触发通知用户的昵称,比如某个客人绑定了某个新设备,则会向该设备的主人发送一条消息,nick就是这个客人的昵称信息。 |
uid | 当type为reset时,携带uid,表示该uid代表的用户对设备执行恢复出厂设置操作 |
did | 设备ID,表示用于与哪个设备绑定、解绑或者关系转移 |
ts | 时间戳(1970年1月1日0点0分0秒到现在的秒数) |
请求消息方向:server->client
消息内容示例
1 | { |
参数名称 | 说明 |
---|---|
cmd | 命令类型,此处为message |
type | 消息的类型 1、HTML消息 2、URL消息 |
title | 消息的标题或者消息简介 |
param | 当type为1时,param为HTML页面的URL 当type为2时,param为消息的唯一编号 |
ts | 时间戳(1970年1月1日0点0分0秒到现在的秒数) |
intro | 内容简介一般不超过30个中文字符 |
请求消息方向:server->client
消息内容示例
1 | { |
参数名称 | 说明 |
---|---|
cmd | 命令类型,此处为online |
from | 设备ID,用于标识哪个设备上线 |
请求消息方向:server->client
消息内容示例
1 | { |
参数名称 | 说明 |
---|---|
cmd | 命令类型,此处为offline |
from | 设备ID,用于标识哪个设备下线 |
请求消息方向:client->server
消息内容示例
1 | { |
参数名称 | 说明 |
---|---|
cmd | 命令类型,此处为getDevs |
mid | 消息序号 |
返回说明:服务器收到获取设备列表请求命令后,将结果信息返回给客户端。
返回消息方向:server->client
返回内容
1 | { |
参数名称 | 说明 |
---|---|
cmd | 命令类型,此处为resp |
mid | 消息序号 |
success | 1为成功 |
devlist | 设备列表 |
请求消息方向:client->server
消息内容示例
1 | { |
参数名称 | 说明 |
---|---|
cmd | 命令类型,此处为query |
mid | 消息序号 |
to | 设备的ID,标识具体要查询哪个设备的信息 |
返回说明:设备收到设备查询命令时,需要作出响应,返回设备的详细信息。
返回消息方向:server->client
返回内容
1 | { |
参数名称 | 说明 |
---|---|
cmd | 命令类型,此处为resp |
mid | 消息序号 |
code | 操作结果码,为0表示操作成功,非0表示错误码信息 |
as | 设备属性集合,如{“1”:1,”2”:4} |
asc | 属性权限约束,目前支持两种约束类型,0:禁止读写 1:只读属性。 |
fids | 当设备出现故障时,携带故障码列表 |
ota | 设备的升级状态信息三元组,数组的第一个元素表示要升级的是模块还是设备,默认为0。具体取值如下:0:给模块升级1:给设备升级 注意:不允许同时升级模块和设备。数组的第二个元素表示升级进度,规定如下:1:开始下载2:下载中3:下载成功4:下载失败5:开始升级6:升级中7:升级成功8:升级失败 数组的第三个元素表示当前升级进度下的百分比值,默认为0 |
请求消息方向:client->server
消息内容示例
1 | { |
参数名称 | 说明 |
---|---|
cmd | 命令类型,此处为query |
mid | 消息序号 |
to | 设备ID |
as | 设备属性集合,如{“1”:1,”2”:4} |
返回说明:设备收到设备查询命令时,需要作出响应,返回设备的详细信息。
返回消息方向:server->client
返回内容
1 | 成功时 |
参数名称 | 说明 |
---|---|
cmd | 命令类型,此处为resp |
mid | 消息序号 |
code | 操作结果码,为0表示操作成功,非0表示错误码信息 |
请求消息方向:server->client
消息内容示例
1 | { |
参数名称 | 说明 |
---|---|
cmd | 命令类型,此处为offline |
mid | 消息ID |
from | 此处为设备ID,用于标识消息的来源,from的值与opt命令中的to保持一致 |
as | 设备属性集合,如{“1”:1,”2”:4} |
fids | 当设备出现故障时,携带故障码列表 |
请求消息方向:server->client
消息内容示例
1 | { |
参数名称 | 说明 |
---|---|
cmd | 命令类型,此处为offline |
from | 此处为设备ID,用于标识消息的来源 |
aid | 三元组的第一个元素为属性编号,第二个元素为属性值,第三个元素表示告警级别。1、2、3、4保留未使用 5:表示设备通知消息 6:表示设备告警消息 |
ts | 时间戳(1970年1月1日0点0分0秒到现在的秒数) |
title | 表示告警标题,有的话带上 |
msg | 表示告警对应的文字描述信息,用于在客户端显示告警信息 |
请求消息方向:server->client
消息内容示例
1 | { |
参数名称 | 说明 |
---|---|
cmd | 命令类型,此处为fault |
from | 此处为设备ID,用于标识消息的来源 |
fids | 故障码的集合 |
ts | 时间戳(1970年1月1日0点0分0秒到现在的秒数) |