回调配置说明
在使用 ZEGO 服务端 API 时,开发者可通过回调服务对接业务后台,进一步保证业务的有序和正常。
回调服务不能保证完全可靠,请慎重考虑使用回调方案构建核心业务流程的风险。
使用场景
例如:
- 客户端推流成功后,业务后台可以接收 ZEGO 服务端的 流创建回调,用于增加直播列表 (可维护直播列表)。
- 流创建回调中的 “pic_url” 可用于鉴黄,默认 20s 一张的缓存图片。
- “pic_url” 只能在推流过程中使用,推流结束后无效。
-
客户端停止推流后,业务后台可以接收 ZEGO 服务端的 流关闭回调,用于删除直播列表 (可维护直播列表)。
-
客户端结束直播后,业务后台可以接收 ZEGO 服务端的 录制文件生成回调,用于实现点播服务。
回调配置
开发者可根据实际业务需要,在 ZEGO 控制台 的 “项目配置 > 服务端回调配置” 中进行回调信息的配置。
同时,可按需配置接收 ZEGO 回调的 URL 地址。
可按如下方式查看控制台界面:
- 2021-11-16 之后注册 ZEGO 控制台 的用户,请参考 控制台 - 服务端回调配置。
- 2021-11-16 及之前注册 ZEGO 控制台 的用户,请参考 控制台(旧版) - 项目管理 中的 “高级配置”。
回调说明
- 请求方法:POST。
回调数据格式为 JSON,您需要对其进行 UrlDecode 解码。
- 传输协议:HTTPS/HTTP,建议使用 HTTPS。
验证签名
为提高数据安全性,建议开发者在收到 ZEGO 服务端发出的回调时,进行本地签名计算,并与 signature 进行对比,判断该请求是否合法。
校验的使用流程如下:
对参数进行排序
将 callbacksecret
、timestamp
、nonce
三个参数按照字典序进行排序
计算 SHA1
将排序后的 callbacksecret
、timestamp
、nonce
拼接成一个字符串并进行sha1计算
校验 signature
将计算后的哈希字符串与 signature
进行校验对比,如果相同则标识该请求来源于 ZEGO
参数说明如下:
参数 | 说明 |
---|---|
callbacksecret | 服务端校验密钥。在 ZEGO 控制台 注册项目时生成,可在 “控制台 > 项目配置 > 项目信息 > 配置信息” 中查看。 |
timestamp | Unix 时间戳。 |
nonce | 随机数。 |
以下示例代码用于生成和检验 signature。
// 从请求参数中获取到 signature, timestamp, nonce
$signature = $_POST["signature"];
$timestamp = $_POST["timestamp"];
$nonce = $_POST["nonce"];
$secret = callbacksecret;// 控制台获取的 callbacksecret
$tmpArr = array($secret, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
} else {
return false;
}
输出示例如下:
$nonce = 123412;
$timestamp = 1470820198;
$secret = 'secret';
// 三个参数经过排序后的顺序为:nonce、timestamp、secret
// 排序拼接后需要加密的原始串为:1234121470820198secret
// 哈希运算的结果为:5bd59fd62953a8059fb7eaba95720f66d19e4517
返回响应
返回 HTTP status code 为 2XX (例如 200)表示成功,其他响应都表示失败。
回调重试策略
如果 ZEGO 服务器没有收到响应,或收到的 HTTP status code 不为 2XX(例如 200),都会尝试重试,最多进行 5 次重试。每次重试请求与上一次请求的间隔时间分别为 2s、4s、8s、16s、32s。若第 5 次重试后仍然失败,将不再重试,该回调丢失。