AUI Kits 互动KTV AppServer提供了登录和KTV房间管理等后台服务,通过与AUI Kits SDK搭配使用可以快速实现在线K歌房应用,助力业务创新快速上线。
前提条件
需要开通应用,并且在你的服务端上开发相关接口或直接部署提供的Server源码,请参见前置准备。
如果您需要通过容器镜像快速部署AppServer,请确保环境中已安装Docker,详情请参见Docker。
如果您需要通过源码构建并部署AppServer,需确保环境中已安装JDK 8。
通过源码构建及部署
根据服务端源码的说明文档配置并执行。
项目部署和体验
技术选型
基于主流的Java 8 + Springboot 2搭建框架
基于Mybatis plus作为Repository层选型,存储可以使用MySQL
基于SpringSecurity + JWT 来实现权限控制
部署
安装了Java8之后即可在各个ECS或容器上运行。
如果熟悉函数计算,也可以使用Serverless平台快速部署。
重要在首次部署服务器时,请务必编辑代码文件
code/src/main/java/com/aliyuncs/aui/common/utils/JwtUtils.java
,给属性SECRET随机设置一个字符串。
配置文件
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
# pop配置
biz:
# pop配置。需要配置账号的ak及as,用于调用IM相关服务
openapi:
access:
key: "daeewe*****"
secret: "we2wewe******"
# 互动消息服务(新)应用信息
new_im:
appId: "0c8xxxxx"
appKey: "586fxxxxxx"
appSign: "232sfxxxxxx"
# 连麦应用信息
live_mic:
app_id: "7c61********"
app_key: "c461b*********"
http:
cors:
host: "*"
参数说明
参数配置信息 | 说明 |
| 调用阿里云IM及Live相关服务API时,您需要使用AccessKey完成身份验证。AccessKey包括AccessKey ID和AccessKey Secret。具体如下:
更多信息,请参见创建AccessKey。 |
| 直播动消息应用ID,请参见控制台开通与配置中的创建直播互动消息应用获取。 |
| 连麦功能如果需要可进行配置,连麦应用ID和AppKey,请参见创建实时音视频应用。 |
数据库配置
当配置好DB后,手工创建数据库表。以MySQL为例,建表语句为:
-- 互动KTV房间信息表
CREATE TABLE `room_infos` (
`id` char(32) NOT NULL,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
`title` varchar(256) DEFAULT NULL,
`extends` mediumtext,
`status` tinyint DEFAULT NULL,
`chat_id` char(32) DEFAULT NULL,
`notice` varchar(256) DEFAULT NULL,
`cover_url` varchar(256) DEFAULT NULL,
`anchor_id` varchar(256) DEFAULT NULL,
`anchor_nick` varchar(256) DEFAULT NULL,
`meeting_info` mediumtext,
`show_code` int NOT NULL,
`started_at` datetime DEFAULT NULL,
`stopped_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_create_at` (`created_at`),
UNIQUE KEY `udx_show_code`(`show_code`)
) ENGINE=InnoDB;
-- 歌曲列表信息
CREATE TABLE `song_infos` (
`id` bigint NOT NULL AUTO_INCREMENT,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
`room_id` char(32) NOT NULL,
`song_id` varchar(256) NOT NULL,
`song_extends` mediumtext DEFAULT NULL,
`user_id` varchar(256) NOT NULL,
`user_extends` mediumtext DEFAULT NULL,
`top` tinyint NOT NULL DEFAULT 0 COMMENT '0: 非置顶, 1: 置顶',
`top_time` datetime DEFAULT NULL,
`status` tinyint NOT NULL,
`join_members` mediumtext DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_top_time` (`top`, `top_time`),
KEY `idx_create_at` (`created_at`),
KEY `udx_room_id`(`room_id`)
) ENGINE=InnoDB;
各表说明:
room_infos表: 互动KTV房间信息表
song_infos表:歌曲列表信息
具体字段可参考代码对应的各个实体:
com.aliyuncs.aui.entity.RoomInfoEntity
com.aliyuncs.aui.entity.SongInfoEntity