文档

准备建立长连接

更新时间:

标准集成(无UI)场景下,集成低代码音视频工厂服务端后必须搭建Token获取服务房间创建服务,为客户端与服务端建立长连接准备。本文介绍服务端准备与客户端建立长连接的方法。

背景信息

客户端和低代码音视频工厂服务端需要基于长连接通讯,长连接通讯需要事先获取建连Token,客户端可以用此Token通过协议和各个原子能力进行长连接通信。

技术原理

创建房间并建立连接
  1. 获取建连Token

    1. 客户端请求用户自己的AppServer获取建立长连接的accessToken

    2. AppServer通过低代码音视频工厂服务端的GetAuthToken - 获取长链接建连Token接口请求accessToken

    3. 低代码音视频工厂根据GetAuthToken - 获取长链接建连Token接口传递的业务参数生成accessToken并返回给用户的AppServer。

    4. AppServer拿到accessToken之后,将结果返回给客户端。

  2. 创建房间。

    1. 客户端请求用户自己的AppServer创建房间。

    2. AppServer通过服务端CreateRoom - 创建房间接口创建房间资源。

    3. 低代码音视频工厂根据CreateRoom - 创建房间接口传递的业务参数生成房间ID并返回给用户的AppServer。

    4. AppServer拿到创建的房间ID之后,将结果返回给客户端。

  3. 建立长连接,客户端通过步骤1获取的accessToken与本产品的各个原子能力后端服务建立起长连接。

    说明

    建立长连接由客户端发起,详情请参见标准集成(无UI)模式下的各客户端集成文档。

  4. 客户端使用长连接调用服务端原子能力。

获取建连Token示例代码(Java)

利用服务端SDK获取建连Token的基本流程为:

  1. 集成服务端SDK。

  2. 调用GetAuthToken - 获取长链接建连Token接口获取建连Token

以下代码一Java语言为例展示如何获取建连Token。请确保参考示例代码前已完成服务端集成。集成步骤请参见开发者门户

说明 如果您已经完成应用创建,请登录低代码音视频工厂控制台。打开应用管理页面,点击目标应用操作列的集成方式,即可获取集成需要的配置信息。

获取建连Token(Java)

说明

更多语言的示例代码请参见开发者门户

import com.alibaba.fastjson.JSON;
import com.aliyun.imp20210630.Client;
import com.aliyun.imp20210630.models.GetAuthTokenRequest;
import com.aliyun.imp20210630.models.GetAuthTokenResponse;
import com.aliyun.teaopenapi.models.Config;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class Test {

    public static void main(String[] args){

        // API Config
        Config config = new Config();
        
        // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
        // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
        // 本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。如何配置环境变量,请参见https://help.aliyun.com/document_detail/378657.html。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        config.endpoint = "imp.aliyuncs.com";

        // Input Parameters
        String appId = "********"; // 必传,在控制台创建应用后获取的应用ID。包含小写字母、数字,长度为6个字符。
        String appKey = "******"; // 必传,在控制台创建应用后获取的App Key。小写英文和数字,长度32个字符。
        String userId = "*****"; // 在AppId下单独唯一。小写英文、数字、下划线(_)和小数点(.)组成,最大长度32个字符。
        String deviceId = "******"; // 小写英文、数字、下划线(_)和短横线(-)组成,最大长度64个字符。

        try {
            Client client = new Client(config);

            GetAuthTokenRequest request = new GetAuthTokenRequest();
            request.setAppId(appId);
            request.setAppKey(appKey);
            request.setUserId(userId);
            request.setDeviceId(deviceId);
            GetAuthTokenResponse response = client.getAuthToken(request);

            // 判断是否请求失败
            if (null == response) {
                // .....失败逻辑
            }

            // ....成功逻辑
            log.info("GetAuthToken response is : {}", JSON.toJSONString(response));

        } catch (Exception e) {
            // 异常处理
            e.printStackTrace();
        }
    }
}

创建房间示例代码(Java)

利用服务端SDK创建房间的基本流程为:

  1. 集成服务端SDK。

  2. 调用CreateRoom - 创建房间接口创建房间。

以下代码一Java语言为例展示如何获创建房间。请确保参考示例代码前已完成服务端集成。集成步骤请参见开发者门户

说明 如果您已经完成应用创建,请登录低代码音视频工厂控制台。打开应用管理页面,点击目标应用操作列的集成方式,即可获取集成需要的配置信息。

创建房间(Java)

说明

更多语言的示例代码请参见开发者门户

import com.alibaba.fastjson.JSON;
import com.aliyun.imp20210630.Client;
import com.aliyun.imp20210630.models.GetAuthTokenRequest;
import com.aliyun.imp20210630.models.GetAuthTokenResponse;
import com.aliyun.teaopenapi.models.Config;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class Test {

    public static void main(String[] args){

        // API Config
        Config config = new Config();

        // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
        // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
        // 本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。如何配置环境变量,请参见https://help.aliyun.com/document_detail/378657.html。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        config.endpoint = "imp.aliyuncs.com";

        // Input Parameters
        String appId = "********"; // 必传,在控制台创建应用后获取的应用ID。包含小写字母、数字,长度为6个字符。
        String title = "******"; // 房间标题,支持中英文和数字,最大长度32个字符。
        String ownerId = "*****"; // 房主ID,仅支持英文和数字,最大长度36个字符。

        try {
            Client client = new Client(config);

            CreateRoomRequest createRoomRequest = new CreateRoomRequest()                
            createRoomRequest.setAppId(appId);
            createRoomRequest.setTitle(title)                
            createRoomRequest.setRoomOwnerId(ownerId);                
            CreateRoomResponse response = client.createRoom(createRoomRequest);

            // 判断是否请求失败
            if (null == response) {
                // .....失败逻辑
            }

            // ....成功逻辑
            log.info("CreateRoom response is : {}", JSON.toJSONString(response));

        } catch (Exception e) {
            // 异常处理
            e.printStackTrace();
        }
    }
}

后续步骤

准备好建立长连接后,您可以继续实现服务端的功能或者先集成客户端,有需要时再实现服务端其它功能。

  • 本页导读 (1)
文档反馈