服务端集成
AUI Kits互动直播AppServer提供了登录服务和直播间管理服务等后台服务,通过与AUI Kits互动直播场景SDK搭配使用可以快速实现互动直播应用,助力业务创新快速上线。
前提条件
已完成前置准备相关操作。详情请参见前置准备。
已申请创建互动消息应用,并获得AppID、AppKey、AppSign等。详情请参见创建互动消息应用。
如果您需要通过源码构建并部署AppServer,请确保环境中已安装jdk8。
使用该项目,您需要获取以下产品的权限:
云产品
权限策略
授权方式
视频直播
AliyunLiveFullAccess
视频点播
AliyunVODFullAccess
通过源码构建及部署
根据源码的说明文档配置并执行,源码地址:Java。
项目部署和体验
技术选型
基于主流的Java8+Springboot2搭建框架。
基于Mybatis plus作为Repository。
基于SpringSecurity+JWT 来实现权限控制。
部署
安装了Java8之后即可在各个ECS或容器上运行。
如果熟悉函数计算,也可以使用Serverless平台快速部署。
配置文件
# 监听端口
server:
port: 8080
# mysql相关配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
# 连接信息
url: jdbc:mysql://*****:3306/****?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
username: r*****
password: p*****
jackson:
time-zone: GMT+8
date-format: yyyy-MM-dd'T'HH:mm:ss
default-property-inclusion: non_null
#mybatis-plus相关配置。一般不用调整
mybatis-plus:
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.aliyuncs.aui.entity
configuration:
# 是否输出sql语句,本地开发时建议打开,上线前去掉
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# sql执行超时时间
default-statement-timeout: 10
biz:
# pop配置。需要配置账号的ak及as,用于调用IM及VOD相关服务
openapi:
access:
key: daeewe*****
secret: we2wewe******
# 互动消息服务(旧)的应用Id,如果你的项目需要使用老的互动消息服务,请联系我们
live_im:
app_id: TY3****
# 直播推拉流配置
live_stream:
#推流域名
push_url: push.*****.vip
#拉流域名
pull_url: pull.*****.vip
#推流对应的authkey
push_auth_key: zJl4******
#拉流对应的authkey
pull_auth_key: mDZs********
app_name: live
auth_expires: 604800
# 连麦应用信息
live_mic:
app_id: 7c61********
app_key: c461b*********
# 互动消息服务(新)应用信息,在你申请开通应用成功后,可以在登记的邮箱里收到appId、appKey和appSign
new_im:
appId: "0c8xxxxx"
appKey: "586fxxxxxx"
appSign: "232sfxxxxxx"
# 推流状态回调的authKey
live_callback:
auth_key: avdsd*******
# 配置允许跨域的请求域名
http:
cors:
host: "*"
数据库配置
当配置好DB后,手工创建数据库表。以MySQL为例,建表语句为:
CREATE TABLE `room_infos` (
`id` varchar(256) NOT NULL,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
`title` varchar(256) DEFAULT NULL,
`anchor` varchar(256) DEFAULT NULL,
`extends` mediumtext,
`status` bigint DEFAULT NULL,
`mode` bigint DEFAULT NULL,
`chat_id` varchar(256) DEFAULT NULL,
`pk_id` varchar(256) DEFAULT NULL,
`notice` varchar(256) DEFAULT NULL,
`meeting_id` varchar(256) DEFAULT NULL,
`cover_url` varchar(256) DEFAULT NULL,
`anchor_id` varchar(256) DEFAULT NULL,
`anchor_nick` varchar(256) DEFAULT NULL,
`vod_id` varchar(256) DEFAULT NULL,
`meeting_info` mediumtext,
`started_at` datetime DEFAULT NULL,
`stopped_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_create_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
面向服务的鉴权配置
需要先调用/login接口获取鉴权的token, 将token放到请求头中,然后再调用其它接口。流程见:
/login接口说明
该接口客户可按自身业务需求实现,包括token的生成算法也可以自定义,不过要确保生成及检验token使用相同的算法。
使用说明
请求协议: http/https
请求Path:/login
是否需要授权:否
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
username | String | 是 | usernamexxx | 用户名 | |||
password | String | 是 | passwordxxxx | 密码 |
返回数据
名称 | 类型 | 示例值 | 描述 | ||||
code | Integer | 200 | 业务响应码。参考HTTP响应码 | ||||
expire | String | 2023-02-28T14:38:06+08:00 | 过期时间。使用UTC时间格式 | ||||
token | String | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9*** | 授权凭证。默认使用jwt生成 |
示例
请求示例
{
"username":"usernamexxx",
"password":"passwordxxxx"
}
正常返回示例
{
"code": 200,
"expire": "2023-02-28T14:38:06+08:00",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2Nzc1NjYyODYsImlkIjoieXl5eSIsIm9yaWdfaWF0IjoxNjc3NDc5OD****.xxxxxx"
}