客户端和服务端采用WebSocket 长连接。采用JSON-RPC 2.0协议进行消息推送。
连接建立
由客户端发起连接
连接地址 ws://…./…?token=1234567890abcdef,
服务端从连接地址Query String中的 token 参数识别客户端身份
连接结束
1. WebSocket 断开
2. 心跳发起方在发起下一次心跳前没有收到上一次心跳的响应,则断开连接 3. 心跳接收方超过时限没有收到心跳包则断开连接
JSON-RPC简介
JSON-RPC是一种基于JSON的跨语言远程调用协议。有文本传输数据小,便于调试扩展的特点。
1. 请求
JSON-RPC非常简单,在请求时向服务器传输数据格式如下 {
\"jsonrpc\" : \"2.0\
\"method\" : \"sayHello\
\"params\" : [\"Hello JSON-RPC\"], \"id\" : 1 }
jsonrpc:定义JSON-RPC版本。 method:调用的方法名。
params:方法传入的参数,若无参数则为null。
id:调用标识符。可以为字符串,不推荐包含小数(不能准确二进制化),或为null(可能引起混乱)。
2. 响应
服务器返回的数据格式也为JSON,其格式如下: {
\"jsonrpc\" : \"2.0\
\"result\" : \"Hell JSON-RPC\\"error\" : null, \"id\" : 1 }
jsonrpc:定义JSON-RPC版本。 result:方法返回值,调用成功时,不能为null,调用错误时,必须为null。 error:调用时错误,无错误返回null,有错误时则返回一个错误对象。 id:调用标识符,与调用方传入的标识一致,当请求中的id检查发生错误时(转换错误/无效请求),则必须返回null。
3. 错误
3.1. 错误对象
{
\"code\" : 1,
\"message\" : \"Nothing found\\"data\":null }
code:一个表示错误类型的数字。 message:错误描述。
data:附加信息,可为null。
3.2. 错误码
错误码-32768到-32000作为预定义错误的保留值,该范围内的任何未定义代码为未来保留使用。
代码 -32700 -32600 错误 解析错误 含义 服务器接收到无效的JSON;服务器解析JSON文本发生错误。 无效的请求 发送的JSON不是一个有效的请求。 代码 -32601 -36602 -36603 -32000到-32099
错误 无效的参数 无效的方法参数。 内部错误 JSON-RPC内部错误。 含义 方法未找到 方法不存在或不可见。 服务器端错保留给具体实现服务器端错误。 误 二、 p2p穿透
客户端发起
method: p2p_info params:
参数名称 proxy_id token client_ver
是否必须 数据类型 默认值 True True True String String String 描述 代理ID,如:0000002562 网页鉴权值,一串字符 客户端版本号
响应
成功返回 result:
参数名称 p2p_user 是否必须 数据类型 默认值 True String 描述 P2P用户名 turn_ip turn_port sms_local_port True True True String Int String P2P服务器IP P2P服务器端口 本地SMS服务器端口
失败返回 error:
参数名称 code message data 是否必须 数据类型 默认值 True True True Int String Int 描述 错误码 错误描述 附加信息 NULL
三、 开始视频流
客户端发起
method: start_video params:
参数名称 token client_ver sms_ip sms_port device_id stream_type
是否必须 数据类型 默认值 True True True True True True String String String Int String Int 描述 网页鉴权值,一串字符 客户端版本号 SMS 服务器 IP SMS 服务器端口 摄像头设备号 码流类型,0.主码流,1.子码流
响应
成功返回 result:
参数名称 sms_stream_id
是否必须 数据类型 默认值 True String 描述 SMS登录ID 失败返回 error:
参数名称 code message data
是否必须 数据类型 默认值 True True True Int String Int 描述 错误码 错误描述 附加信息 NULL 四、 获取球机信息
服务端发起
method:ball_info params:
参数名称 token client_ver device_id
是否必须 数据类型 默认值 True True True String String String 描述 网页鉴权值,一串字符 客户端版本号 摄像头设备号
响应
成功返回 result:
sucess devType ptz p t z
True True True True True True bool int Object int int int 是否成功 0表示海康,1表示大华 ptz坐标 水平坐标 垂直坐标 变倍参数 失败返回 error:
参数名称 code message data
是否必须 数据类型 默认值 True True True Int String Int 描述 错误码 错误描述 附加信息 NULL 五、 球机控制
服务端发起
method:ball_control params:
参数名称 token client_ver device_id ptz p t z
是否必须 数据类型 默认值 True True True True True True True String String String Object int int int 描述 网页鉴权值,一串字符 客户端版本号 摄像头设备号 ptz坐标 水平坐标 垂直坐标 变倍参数
响应
成功返回 result:
sucess devType ptz p t z
True True True True True True bool int Object int int int 操作是否成功 0表示海康,1表示大华 ptz坐标 水平坐标 垂直坐标 变倍参数 失败返回 error:
参数名称 code message data
是否必须 数据类型 默认值 True True True Int String Int 描述 错误码 错误描述 附加信息 NULL
因篇幅问题不能全部显示,请点此查看更多更全内容