实时音视频

  • 实时音视频 > 使用指南 > 服务端 >房间管理

    房间管理

    最近更新时间:2021-09-16 15:33:01

    这一部分服务是为了让您的业务后台能够自动地完成一些在控制台上需要完成的操作,比如查看房间成员列表,踢出指定用户等。

    一次连麦过程,多个终端音视频通信行为的管理是通过 room 进行的。一个连麦房间必然属于某一个 app。房间无需主动创建或删除,用户直接使用客户端 sdk 指定某个 app 和 room 进行连麦即可加入房间。通过接口可以查询 app 下所有的活跃房间,也可以对某一个房间做相关的业务操作。

    同样,您也可以使用服务端 SDK 提供的方法来完成下列操作,具体请参照相应的 SDK 文档。这里只说明手动发送控制请求的情况。

    对于这些服务,我们统一封装了 Restful 的接口方便给您调用,在调用各个接口之前,您还需要在 http headers 中添加鉴权头以识别您的权限。

    HTTP 请求鉴权

    Qiniu RTC Server API 通过 Qiniu Authorization 方式进行鉴权,每个房间管理 HTTP 请求头部需增加一个 Authorization 字段:

    Authorization: "<QiniuToken>"
    

    QiniuToken 是管理凭证,用于鉴权。

    使用七牛颁发的AccessKey和SecretKey,对本次 http 请求的信息进行签名,生成管理凭证。签名的原始数据包括 http 请求的 Method, Path, RawQuery, Content-Type 及 Body 等信息,这些信息的获取方法取决于具体所用的编程语言,建议参照七牛提供的 SDK 代码。 计算过程及伪代码如下:

    // 1.构造待签名的 Data
    // 添加 Method 和 Path
    data = "<Method> <Path>"
    // 添加 Query,如果Query不存在或者为空,则跳过此步
    if "<RawQuery>" != "" {
            data += "?<RawQuery>"
    }
    // 添加 Host
    data += "\nHost: <Host>"
    // 添加 Content-Type,如果Content-Type不存在或者为空,则跳过此步
    if "<Content-Type>" != "" {
            data += "\nContent-Type: <Content-Type>"
    }
    // 添加回车
    data += "\n\n"
    // 添加 Body, 如果Content-Length, Content-Type和Body任意一个不存在或者为空,则跳过此步;如果Content-Type为application/octet-stream,也跳过此步
    bodyOK := "<Content-Length>" != "" && "<Body>" != ""
    contentTypeOK := "<Content-Type>" != "" && "<Content-Type>" != "application/octet-stream"
    if bodyOK && contentTypeOK {
            data += "<Body>"
    }
    // 2. 计算 HMAC-SHA1 签名,并对签名结果做 URL 安全的 Base64 编码
    sign = hmac_sha1(data, "Your_Secret_Key")
    encodedSign = urlsafe_base64_encode(sign)  
    // 3. 将 Qiniu 标识与 AccessKey、encodedSign 拼接得到管理凭证
    <QiniuToken> = "Qiniu " + "Your_Access_Key" + ":" + encodedSign
    

    ListUser 列出指定房间下当前所有用户

    Host rtc.qiniuapi.com
    GET /v3/apps/<AppID>/rooms/<RoomName>/users
    Authorization: qiniu mac
    
    200 OK
    {
        "users": [
            {
                "userId": "<UserID>"
            },
        ]
    }
    612
    {
        "error": "app not found"
    }
    

    KickUser 指定一个用户踢出房间

    Host rtc.qiniuapi.com
    DELETE /v3/apps/<AppID>/rooms/<RoomName>/users/<UserID>
    Authorization: qiniu mac
    

    UserID: 指操作所剔除的用户。

    200 OK
    612
    {
        "error": "app not found"
    }
    612
    {
        "error": "user not found"
    }
    615
    {
        "error": "room not active"
    }
    

    StopMerge 停止一个房间的合流转推

    用于停止某个房间的服务端合流。 不建议客户使用此接口,使用客户端信令可以更灵活准确地控制合流的启停。

    Host rtc.qiniuapi.com
    DELETE /v3/apps/<AppID>/rooms/<RoomName>/merge
    Authorization: qiniu mac
    
    200 OK
    612
    {
        "error": "app not found"
    }
    615
    {
        "error": "room not active"
    }
    

    ListActiveRoom 获取当前所有活跃的房间

    Host rtc.qiniuapi.com
    GET /v3/apps/<AppID>/rooms?prefix=<RoomNamePrefix>&offset=<Offset>&limit=<Limit>
    Authorization: qiniu mac
    
    200 OK
    {
        "end": <IsEnd>,
        "offset": <Offset>,
        "rooms": [
                "<RoomName>",
                ...
        ]
    }
    612
    {
        "error": "app not found"
    }
    
    参数说明
    AppID连麦房间所属的 app 。
    RoomName房间名。
    RoomNamePrefix所查询房间名的前缀索引,可以为空。
    Offsetint 类型,分页查询的位移标记。
    Limitint 类型,此次查询的最大长度。
    IsEndbool 类型,分页查询是否已经查完所有房间。
    以上内容是否对您有帮助?
  • Qvm free helper
    Close