Skip to content

关于Websocket通信中,设备端与服务器的交互接口约定

Xieqiu edited this page Apr 10, 2017 · 2 revisions

双方接口皆以json串进行交互,基本形式如下:

设备端->服务器:{'type':'xx','data':'xxx'} 设备端端用type字段来确认要对服务器交互动作的内容,data字段来传递该动作的具体内容,type类型目前有:

1.login,登录动作,data为{'name':'xx','token':'xx'},name即为设备注册时的英文名称,token为平台发放的token,当设备登录到服务器后,进行登录动作,也只有进行了登录操作才能有其他type的动作: {
'type':'login', 'data':{ 'name':'musicbox', 'token':'c0c0095300dc8e8742d548937f7dd613' }
}

2.send,上传参数,即设备端向服务器上传的设备状态参数,data为{[{'param':'xx','value':'xx'},{'param':'xx','value':'xx'}]},data内为一个数组,每个数组的元素都为一个对象,包含有param为设备注册时配置的上传参数的英文名称、value当前参数值,例如当设备想向服务器上传开关状态、音量、当前歌曲时: { 'type':'send', 'data':{[ { 'param':'open', 'value':'0' }, { 'param':'volume', 'value':'20' }, { 'param':'songname', 'value':'happy' } ]} }

3.response,设备端下行执行情况,这个是设备完成服务器下行控制后的回调参数,data为{'function':'xx','status':'0/1'},其中function为服务器请求的方法名,status为执行成功:0,执行失败:1,例如: { 'type':'response', 'data':{ 'function':'nextsong', 'status':1 } }

web端->服务器:

1.userlogin:为web端登录到服务器的参数,name为用户id,token为另一个接口发送的remember_token, device_id为要控制的设备的id。 { 'type':'userlogin', 'name':'qiu', 'token':'Token', 'device_id':29 }

2.control:为web端发送控制请求到服务器的参数,functionname为设备注册功能函数到服务器时指定的函数名称,param为函数调用所需的参数列表(一个数组) ,device_id为设备id,与服务到设备端同。 { 'type':'control', 'data':{ 'device_id':29, 'functionname':'nextsong', 'params':[ { 'paramname':'songname', 'value':'happy' }, { 'paramname':'changsongtime', 'value':'now' } ] } }

服务器到web端:

1.response,登录信息返回,暂时无用,对于登录错误者,可以打印调试。

2.send, 设备上传参数,与设备发送至服务器同。 { 'type':'send', 'data':{[ { 'param':'open', 'value':'0' }, { 'param':'volume', 'value':'20' }, { 'param':'songname', 'value':'happy' } ]} }

3.function_response, 函数调用结果,与设备发送至服务器同。 { 'type':'response', 'data':{ 'function':'nextsong', 'status':1 } }

服务器->设备端:{'type':'xx','data':'xxx'} 服务器到设备type有以下几种:

1.control,为服务端对设备进行下行控制时传递的参数,data为{'functionname':'xx','param':[xxx]},functionname为设备注册功能函数到服务器时指定的函数名称,param为函数调用所需的参数列表(一个数组),每一个参数包括paramname参数名、value参数值,例如下面这个切歌的函数,带有函数名nextsong,参数:下一首歌的名称和切歌的时间:

{ 'type':'control', 'data':{ 'functionname':'nextsong', 'params':[ { 'paramname':'songname', 'value':'happy' }, { 'paramname':'changsongtime', 'value':'now' } ] } }

2.response,这个是用于服务器返回一些对设备端的验证消息的,包括登录验证或服务器关闭通知(后期加入),以登录状态验证为例子,登录的返回结果data{'return':'login','status':'0/1','msg':'xx'},return字段指定返回信息是针对什么内容的返回(目前是针对登录的返回,即为login),status指定返回情况(有登录成功:0或失败:1),msg指定返回的附加详情内容,例如: { 'type':'response', 'data':{ 'return':'login', 'status':1, 'msg':'token验证失败,登录失败' } }

Clone this wiki locally