通过阅读本文,您可以了解互动大班课服务端的集成操作。

环境要求

开发工具:IntelliJ IDEA。

前提条件

  • 您已经注册了阿里云账号并完成账号实名认证。注册地址请参见阿里云官网。注册指引请参见注册阿里云账号。实名认证指引请参见个人实名认证企业实名认证

  • 您已经注册用于服务配置的域名并且已备案。更多信息,请参见域名注册备案
  • 您已经开通音视频通信服务。具体操作,请参见开通服务

  • 您已经开通了直播互动服务,单击此处申请邀测。
  • 环境中已安装Java JDK 8或以上的版本。具体操作,请参见安装JDK
    说明 如果服务端为Linux环境,推荐安装Oracle JDK,不推荐使用Open JDK进行服务端集成。
  • 服务端环境已安装Redis或已经购买阿里云Redis服务。更多信息,请参见Redis概览

操作步骤

  1. 获取AppID和AppKey。此处建议记录AppID和AppKey,方便后续操作中使用。
    1. 登录RTC控制台
    2. 在左侧导航栏单击应用管理,进入应用管理页面。
    3. AppID/名称列获取AppID。
    4. 单击操作列的查询AppKey,获取AppKey。
    说明 如果应用列表中没有您需要的应用,可以单击创建应用,创建新的应用。具体操作,请参见创建应用
  2. 获取AccessKey。
    说明 阿里云账号(主账号)的AccessKey泄露会威胁您所有资源的安全。从安全考虑,请创建RAM用户(子账号)并获取对应的AccessKey,用于访问您的云资源。
    1. 登录RAM控制台
    2. 在左侧导航栏选择身份管理 > 用户,进入用户页面。
    3. 单击创建用户,填写用户账号信息,选中Open API 调用访问创建用户。
      001
    4. 单击确定
    5. 重新返回用户页面。在用户登录名称/显示名称列下,单击目标RAM用户(子账号),进入管理页面。
      单击子RAM账户
    6. 单击权限管理,再单击添加权限
      添加权限
    7. 选择AliyunRTCFullAccess(管理音视频通信的权限,可输入RTC进行搜索)。单击确定
      添加权限
    8. 单击认证管理,在用户AccessKey区域单击创建AccessKey
      创建AccessKey
      说明
      • 首次创建时需填写手机验证码。
      • 如果AccessKey泄露或丢失,则需要创建新的AccessKey,最多可以创建2个AccessKey。
    9. 获取AccessKey ID和AccessKey Secret。
      创建AccessKey完成后,会弹出创建AccessKey对话框,包含AccessKey ID和AccessKey Secret信息。此处建议记录AccessKey ID和AccessKey Secret,方便后续操作中使用。获取AccessKey
  3. 下载并解压Demo,更多信息,请参见Demo源码下载
    说明
    • 源码压缩文件内分为Android、iOS、Electron、Server四端文件。
    • 如果GitHub代码库下载缓慢,可安装加速插件等方式加速下载。
  4. 使用IntelliJ IDEA打开Demo工程(包含pom.xml的目录)。
  5. 修改配置文件application.properties。
    ##服务启动 端口号;
    
    server.port=8080
    server.tomcat.accesslog.buffered=false
    
    ##日志文件夹配置,可以根据自己的实际情况进行配置;
    server.tomcat.accesslog.directory=/home/alivcrtc/liveClassJar
    server.tomcat.accesslog.enabled=true
    
    server.servlet.context-path=/interactive-live-class/
    ## 日志配置,可以根据需要进行修改;
    logging.level.com.live.dao=debug
    logging.level.com.live.dao.user=debug
    logging.level.com.alivc.vod.dao=debug
    logging.file:my.log
    logging.pattern.file=%d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread]
    %logger{15}.%M : %msg%n
    logging.pattern.console=%d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread]
    %logger{15}.%M - %msg%n
    
    ##阿里云账号AK,用于服务端调用OpenAPI时候使用;
    accessKeyID=*****
    accessKeySecret=*****
    ##RTCappid 和 appkey 在开通RTC服务和创建应用时可以获取;
    rtc.liveclass.appId =
    *****
    rtc.liveclass.appKey = *****
    rtc.gslb = https://rgslb.rtc.aliyuncs.com(请不要修改)
    
    ##每个房间通话限时 : <0 不限制,单位:分钟;
    durationlimit=-1
    
    #------------ Redis -----------------
    spring.redis.host=****
    #spring.redis.host=localhost
    # Redis 服务器连接端口
    spring.redis.port=6379
    # Redis 数据库索引(默认为 0)
    spring.redis.database=0
    # Redis 服务器连接密码(默认为空)
    spring.redis.password=****
    #连接池最大连接数(使用负值表示没有限制)
    spring.redis.jedis.pool.max-active=8
    # 连接池最大阻塞等待时间(使用负值表示没有限制)
    spring.redis.jedis.pool.max-wait=-1
    # 连接池中的最大空闲连接
    spring.redis.jedis.pool.max-idle=8
    # 连接池中的最小空闲连接
    spring.redis.jedis.pool.min-idle=0
    
    ## 内部消息系统,在开通互动直播时获取;
    IM_AccessKeyId = ***
    IM_AccessKeySecret = ***
    IM_AppId = ***
  6. 编译运行。
    • 方法一:

      在IntelliJ IDEA中运行Application.java。

    • 方法二:

      通过Maven命令进行编译打包成jar,然后通过java -jar运行,具体的命令如下所示:

      mvn clean package -Dmaven.test.skip

      java -jar target/live-class-api.jar

  7. 获取服务URL。此处建议记录一下,方便后续其它端集成操作中使用。

    服务URL结构为http://{ip}:{port}/{contextPath}/{api},详细说明如下所示:

    • ip:运行server的服务器或者本地PC的IP地址。
    • port:服务启动端口号,即步骤5server.port的值。
    • contextPath:步骤5server.servlet.context-path的值。
    • api:详情请参见API说明

    例如,服务URL的地址为http://127.0.0.1:8080/interactive-live-class/getRtcAuth。

Demo目录结构说明

此Demo为标准的通过SpringBoot框架对外提供REST接口的项目,也是一个标准的Maven项目。项目结构如下所示:

文件名 说明
\java\com\alivc\base 基础工具类。
\java\com\alivc\liveclass 业务逻辑包,主要包含4个Package:
  • controller:对外提供的REST接口。
  • model:业务封装类。
  • service:和Redis交互的主要业务逻辑。
  • utils:Redis配置。
resources SpringBoot工程的配置文件。
webapp webapp模块。

API说明

RTC相关:

getRtcAuth:下发RTC相关鉴权信息。

IM相关:

  • login:下发IM相关鉴权信息给客户端(客户端登录IM系统时需要用到)。
  • createGroup:创建一个群组(本项目设计为一个课堂对应一个群组)。
  • getGroup:通过课堂ID获取群组ID。
  • leaveChannel:离开课堂。
  • destoryChannel:删除课堂。
  • joinChannel:加入课堂。
  • sendMsg:通过服务端发送消息。
  • callback:接收IM服务的回调信息。

关于接口的详细信息,请参见Demo中README.md。