本文介绍服务端与客户端建立长连接的方法。
前提条件
需要提前在应用管理页面获取应用ID信息,请参见创建应用。
技术原理
客户端和视频直播互动服务端需要基于长连接通讯,长连接通讯需要事先获取建连Token,客户端可以用此Token通过协议和各个原子能力进行长连接通信。
- 获取建连Token。
- 客户端请求用户自己的AppServer获取建立长连接的messageToken。
- AppServer通过直播服务端的GetMessageToken (获取长连接建连Token接口)请求messageToken。
- 直播服务端根据GetMessageToken (获取长连接建连Token接口)接口传递的业务参数生成messageToken并返回给用户的AppServer。
- AppServer拿到accessToken之后,将结果返回给客户端。
- 建立长连接,客户端通过上述步骤获取的accessToken与本产品的直播后端服务建立起长连接。说明 建立长连接由客户端发起,详细操作请参见客户端文档。
- 客户端使用长连接调用直播服务端能力。
获取建连Token示例代码(Java)
利用服务端SDK获取建连Token的基本流程为:
- 集成服务端SDK。
- 调用GetMessageToken (获取长连接建连Token接口)获取建连Token。
以下代码为Java语言为例展示如何获取建连Token。请确保参考示例代码前已完成服务端集成。集成步骤请参见开发者门户。
说明
- 多语言的示例代码请参见开发者门户。
- AccessKey ID和AccessKey Secret获取方式,请参见创建AccessKey。
- Endpoint(服务接入地址)需要根据您的直播中心区域填写,具体请参见请求结构中服务地址。
import com.alibaba.fastjson.JSON;
import com.aliyun.live20161101.Client;
import com.aliyun.live20161101.models.GetMessageTokenRequest;
import com.aliyun.live20161101.models.GetMessageTokenResponse;
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();
config.accessKeyId = "yourAccessKeyId";
config.accessKeySecret = "yourAccessKeySecret";
config.endpoint = "live.aliyuncs.com";
// Input Parameters
String appId = "********"; // 必传,在控制台创建应用后获取的应用ID。包含小写字母、数字,长度为6个字符。
String userId = "*****"; // 在AppId下单独唯一。小写英文、数字、下划线(_)和小数点(.)组成,最大长度32个字符。
String deviceId = "******"; // 小写英文、数字、下划线(_)和短横线(-)组成,最大长度64个字符。
String deviceType = "******"; // 设备类型,ios|android|web|pc
try {
Client client = new Client(config);
GetMessageTokenRequest request = new GetMessageTokenRequest();
request.setAppId(appId);
request.setUserId(userId);
request.setDeviceId(deviceId);
request.setDeviceType(deviceType);
GetMessageTokenResponse response = client.getMessageToken(request);
// 判断是否请求失败
if (null == response) {
// .....失败逻辑
}
// ....成功逻辑
log.info("GetMessageToken response is : {}", JSON.toJSONString(response));
} catch (Exception e) {
// 异常处理
e.printStackTrace();
}
}
}