您可以阅读本文,了解1对1语音聊天服务端的集成操作。
前提条件
- 您已经完成注册阿里云账号,并完成实名认证,具体操作请参见阿里云账号注册流程。
- 您已经开通音视频通信服务,具体操作请参见开通服务。1对1语音聊天无需购买套餐也可正常搭建。
- 首次开通RTC服务后,系统会自动帮您创建一个应用项目,可以直接使用自动创建好的应用项目进行使用。如果没有应用项目,需要您在阿里云音视频通信RTC控制台创建应用。
- 服务端环境需要Java JDK 8的版本,具体操作,请参见安装JDK。
说明 Linux环境推荐安装Oracle JDK,不推荐使用Open JDK进行服务端集成。
操作步骤
说明 您在集成服务端时,如果遇到问题,请参见服务端运行常见问题。
主要功能说明
- 生成joinChannel所需鉴权信息
访问地址:/app/token
客户端调用RTC SDK加入房间的Token信息就是从这个接口获得。具体生成方式,请参见RTC帮助文档生成Token。
MessageDigest digest = MessageDigest.getInstance("SHA-256"); digest.update(appId.getBytes()); digest.update(appKey.getBytes()); digest.update(channelId.getBytes()); digest.update(userId.getBytes()); digest.update(nonce.getBytes()); digest.update(Long.toString(timestamp).getBytes()); String token = DatatypeConverter.printHexBinary(digest.digest()).toLowerCase(); return token;
- 查询频道实时在线用户列表
访问地址:/app/descChannelUsers
AppServer通过调用rtcOpenApi的DescribeChannelUsers接口查询频道的实时在线人数。
DefaultAcsClient client = initVodClient(); DescribeChannelUsersRequest request = new DescribeChannelUsersRequest(); request.setAppId(appId); request.setChannelId(channelId); DescribeChannelUsersResponse response = client.getAcsResponse(request);
- 查询房间开启时间
访问地址:/app/descChannelStartTime
当客户端请求加入房间所需的token时,服务端查询当前房间人数,若房间人数为0,保存当前时刻和房间id。并把当前时刻作为此房间的创建时间。
DescribeChannelUsersResponse response = RtcOpenAPI.describeChannelUsers(appId, channelId); if (CollectionUtils.isEmpty(response.getUserList())) { ImmutablePair<String, String> appChannel = new ImmutablePair<>(appId, channelId); ScheduledFuture scheduledFuture = TASKS.getOrDefault(appChannel, new JSONObject()).getObject("scheduledFuture", ScheduledFuture.class); TASKS.put(appChannel, channelInfo); } JSONObject scheduledTask = ScheduledDeleteChannel.TASKS.get(ImmutablePair.of(appId, channelId));
在文档使用中是否遇到以下问题
更多建议
匿名提交