服务端快速集成

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: "*"

参数说明

参数配置信息

说明

# pop配置。需要配置账号的AccessKey ID和AccessKey Secret,用于调用IM及live相关服务
  openapi:
    access:
      key: "daeewe*****"
      secret: "we2wewe******"

调用阿里云IM及Live相关服务API时,您需要使用AccessKey完成身份验证。AccessKey包括AccessKey ID和AccessKey Secret。具体如下:

  • AccessKey ID:用于标识用户。

  • AccessKey Secret:用于验证用户的密钥。AccessKey Secret必须保密。

更多信息,请参见创建AccessKey

# 新IM相关配置 
new_im:
  appId: "0c8xxxxx"
  appKey: "586fxxxxxx"
  appSign:  "232sfxxxxxx"

直播动消息应用ID,请参见控制台开通与配置中的创建直播互动消息应用获取。

# 连麦应用信息
live_mic:
  app_id: "7c61********"
  app_key: "c461b*********"

连麦功能如果需要可进行配置,连麦应用IDAppKey,请参见创建实时音视频应用

数据库配置

当配置好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