logologo
售前咨询
直播云
产品简介
产品定价
控制台操作指南
客户端SDK
服务端API
域名管理相关接口
证书管理相关接口
直播流管理相关接口
转码管理相关接口
录制管理相关接口
用量查询相关接口
直播质量相关接口
直播回调相关接口
地址管理相关接口
相关协议
文档中心服务端API直播回调相关接口推断流回调事件说明

推断流回调事件说明


事件回调

事件回调服务支持将直播云业务下的事件,以 HTTPS 请求的形式通知到第三方的服务器:

  1. 第三方需要提供HTTPS服务器地址;
  2. 第三方需要提供计算签名的密钥,自定义一个最大32个字符的字符串,由大小写字母以及数字组成;

超时重试

事件回调服务器请求回调之后,3秒内没有收到服务器的响应,会重试3次,超时时间3秒,3次重试失败后不再重试。

消息格式

请求

post请求

body格式为json

应答

HTTP STATUS CODE = 200,服务端忽略应答包具体内容


事件回调消息的 header 中包含以下字段:

字段名

Content-Type

application/json

Sign

签名值,具体签名算法见下文

签名计算

签名由 HMAC SHA256 加密算法计算得出,事件回调接收服务器收到回调消息后,通过同样的方式计算出签名,相同则说明校验成功,没有被篡改

//签名 Sign 计算公式中 key 为计算签名 Sign 用的加密密钥。body为请求的原始包体
Sign = base64(hmac-sha256(key, body)

注意:接收到的body一定要是string,如果用实体接收在转字符串时json字段的顺序可能会发生变化,导致签名校验失败;


签名工具类

import org.apache.commons.codec.binary.Base64;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;

public class SignUtil {
private final static Charset UTF8 = StandardCharsets.UTF_8;
public static String getSignStr(String key,String body) throws Exception {
return Base64.encodeBase64String(hmac256(key.getBytes(UTF8),body));
}
private static byte[] hmac256(byte[] key, String msg) throws Exception {
Mac mac = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKeySpec = new SecretKeySpec(key, mac.getAlgorithm());
mac.init(secretKeySpec);
return mac.doFinal(msg.getBytes(UTF8));
}

}

回调参数

字段名称

类型

说明

eventType

String

回调事件类型,详情见下表

pushStartTime

int64

开始推流时间(推流时独有)

pushEndTime

int64

断流发生时间(断流时独有)

callbackTime

int64

回调时间

errorCode

int64

错误码,详情见下表

pushDomain

String

推流域名

appName

String

应用名

streamName

String

流名

事件类型(eventType)

事件类型

字段

说明

推流事件

pushStart

开始推流时触发的事件

断流事件

pushEnd

推流结束时触发的事件

错误码(errorCode)

错误码

错误说明

对应触发事件

0

用户主动断流 / 用户正常推流

推流事件 / 断流事件

100201

源站内部错误

断流事件

100202

长时间无数据,源站主动断开

断流事件

100103

推流域名被禁用

推流事件

100301

流名被禁推

推流事件 / 断流事件

100101

推流鉴权失败

推流事件

100102

当前流名正在推流中,无法被顶播

推流事件

100106

推流超时

断流事件

100399

其它原因

推流事件 / 断流事件

回调消息示例

// 正常推流事件
{
"eventType":"pushStart",
"pushStartTime":1702315678212,
"callbackTime":1702315678412,
"errorCode":0,
"pushDomain":"push-domain.com",
"appName":"live",
"streamName":"teststream"
}
// 正常断流事件
{
"eventType":"pushEnd",
"pushEndTime":1702315678212,
"callbackTime":1702315678412,
"errorCode":0,
"pushDomain":"push-domain.com",
"appName":"live",
"streamName":"teststream"
}


上一篇:获取单个回调模版下一篇:生成推流地址
该篇文档内容是否对您有帮助?
有帮助没帮助