背景信息
客户端和低代码音视频工厂服务端需要基于长连接通讯,长连接通讯需要事先获取建连Token
,客户端可以用此Token通过协议和各个原子能力进行长连接通信。
技术原理
![创建房间并建立连接](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5922265461/p408120.png)
获取建连Token
。
客户端请求用户自己的AppServer
获取建立长连接的accessToken
。
AppServer
通过低代码音视频工厂服务端的GetAuthToken - 获取长链接建连Token接口请求accessToken
。
低代码音视频工厂根据GetAuthToken - 获取长链接建连Token接口传递的业务参数生成accessToken
并返回给用户的AppServer。
AppServer
拿到accessToken
之后,将结果返回给客户端。
创建房间。
客户端请求用户自己的AppServer创建房间。
AppServer
通过服务端CreateRoom - 创建房间接口创建房间资源。
低代码音视频工厂根据CreateRoom - 创建房间接口传递的业务参数生成房间ID
并返回给用户的AppServer。
AppServer
拿到创建的房间ID之后,将结果返回给客户端。
建立长连接,客户端通过步骤1获取的accessToken
与本产品的各个原子能力后端服务建立起长连接。
说明 建立长连接由客户端发起,详情请参见标准集成(无UI)模式下的各客户端集成文档。
客户端使用长连接调用服务端原子能力。
获取建连Token示例代码(Java)
利用服务端SDK获取建连Token的基本流程为:
集成服务端SDK。
调用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创建房间的基本流程为:
集成服务端SDK。
调用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();
}
}
}
后续步骤
准备好建立长连接后,您可以继续实现服务端的功能或者先集成客户端,有需要时再实现服务端其它功能。