> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stmlink.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 概览

> SRTC 音视频 SDK 产品概览

服务端接口是供业务方后端（可参考服务端demo）调用的接口。

### 基本概念

**频道**：频道是一个音视频空间（可以理解为一场会议），同一频道内的用户可以互相接收对方的实时音视频数据。

#### 加入频道流程

1. 业务方客户端调用业务方后端的进入频道接口
2. 业务方后端调用`服务端api`的`channel/grant`获取token返回给业务方客户端
3. 业务方客户端将`token`传给rtc sdk以加入频道

#### 频道的打开与销毁

* 频道可手动打开（如需要提前设置一些频道扩展属性）
* 第一个用户加入频道时如果频道未打开，自动打开
* 频道开启后2小时内无人加入，或最后一个用户离开频道2小时后，会自动销毁

#### 频道名规范

长度在 64 字节以内的字符串。以下为支持的字符集范围：

* 26 个小写字母 a-z。
* 26 个大写字母 A-Z。
* 10 个数字 0-9。
* "-","\_"。

### 约定

* 本协议采用HTTP+JSON格式进行传输 `application/json`
* 协议所有接口只支持`POST`
* 字符串编码为UTF-8

### 准备

调用前需要得到`app_id`和`app_key`

### 请求头

| 头         | 说明           | 备注                                                              |
| --------- | ------------ | --------------------------------------------------------------- |
| app\_id   | 应用id         | 必填                                                              |
| nonce     | 请求唯一ID,防重复提交 | 必填，16位随机字符串                                                     |
| timestamp | unix时间戳s     | 必填，客户端本地时间戳，精确到秒。<br />客户端本地时间和服务器前后相差不能超过5分钟，否则服务器会拒绝客户端的请求。   |
| signature | 签名值          | 必填, 采用HMAC-SHA256算法，用服务器发放的app\_key作为key，对除signature外的请求数据进行加密。 |

#### 签名算法

第一步：拼接待签名字符串，将`app_id` `nonce` `timestamp`以及请求body的json字符串用&拼接

```typescript theme={null}
// 假定app_id=1 nonce=2 timestamp=3 请求体为{}
app_id=1&nonce=2&timestamp=3&{}
```

第二步：使用HMAC-SHA256加密字符串。key是`app_key`秘钥。

```typescript theme={null}
HMACSHA256(key, 待签名字符串)
```

第三步：把二进制转化为小写的十六进制得到`signature`

### 响应格式

正常返回，`code`为0，`data`为数据

```css theme={null}
{
    "code": 0,
    "data": 123
}
```

有错误，`code`为错误码，`msg`为错误描述

```css theme={null}
{
    "code": 10041,
    "msg": "认证失败"
}
```
