您可以阅读本文,了解语音聊天室服务端的集成操作。
前提条件
- 您已经完成注册阿里云账号,并完成实名认证,具体操作请参见阿里云账号注册流程。
- 您已经开通音视频通信服务,具体操作请参见开通服务。语音聊天室无需购买套餐也可正常搭建。
- 首次开通RTC服务后,系统会自动帮您创建一个应用项目,可以直接使用自动创建好的应用项目进行使用。如果没有应用项目,需要您在阿里云音视频通信RTC控制台创建应用。
- 服务端环境需要Java JDK 8的版本,具体操作,请参见安装JDK。
- 服务端环境建议使用MySQL 5.7版本。具体操作,请参见安装MySQL。
说明 Linux环境推荐安装Oracle JDK,不推荐使用Open JDK进行服务端集成。
操作步骤
说明 您在集成服务端时,如果遇到问题,请参见服务端运行常见问题。
主要功能说明
- 生成随机用户,并返回用户信息
访问地址:/user/randomUser
随机生成用户信息和客户端调用RTC SDK加入房间的Token信息。具体生成方式参考RTC帮助文档生成Token。
if (StringUtils.isBlank(channelId)) { channelId = RandomStringUtils.randomNumeric(5); } JSONObject rtcAuth = RtcOpenAPI.createToken(channelId, UUID.randomUUID().toString()); rtcAuth.put("userName", RandomString.getRandomName()); return rtcAuth;
- 成功加入房间后保存用户信息
访问地址:/user/joinSuccess
客户端成功加入房间后,通知AppServer,保存用户信息到rds。
userService.insertUser(channelId, userid, userName, seatIndex);
- 获取上麦用户麦序
访问地址:/user/getSeatList
获取所有上麦用户麦序信息。查询频道实时在线用户列表,对比AppServer保存的用户麦序,为新上麦的用户分配麦序,删除下麦用户的麦序。
List<User> userList = userService.getUserList(channelId); DescribeChannelUsersResponse describeChannelUsersResponse = RtcOpenAPI.describeChannelUsers(appId, channelId); List<String> liveUserList = describeChannelUsersResponse.getInteractiveUserList(); List<String> takeSeatUserIds = new ArrayList<>(liveUserList); List<String> leaveSeatUserIds = new ArrayList<>(userIdList); List<String> existSeatIndex = new ArrayList<>(); for (User user : userList) { if (liveUserList.contains(user.getUserId())) { existSeatIndex.add(user.getSeatIndex()); } } leaveSeatUserIds.removeAll(liveUserList); takeSeatUserIds.removeAll(userIdList); List<User> updateUserList = new ArrayList<>(); for (int i = 0, takeSeatIndex = 0; i < 8 && takeSeatIndex < takeSeatUserIds.size(); i++) { if (!existSeatIndex.contains(String.valueOf(i))) { User user = new User(); user.setUserId(takeSeatUserIds.get(takeSeatIndex)); user.setSeatIndex(String.valueOf(i)); updateUserList.add(user); takeSeatIndex++; } } for (String leaveSeatUserId : leaveSeatUserIds) { User user = new User(); user.setUserId(leaveSeatUserId); user.setSeatIndex(null); updateUserList.add(user); } userService.updateUserSeats(updateUserList); userList = userService.getUserList(channelId);
- 查询房间人数
调用访问地址:/user/describeChannelUsers
查询频道实时在线用户列表。
DefaultAcsClient client = initVodClient(); DescribeChannelUsersRequest request = new DescribeChannelUsersRequest(); request.setAppId(appId); request.setChannelId(channelId); DescribeChannelUsersResponse response = client.getAcsResponse(request);
在文档使用中是否遇到以下问题
更多建议
匿名提交