通过阅读本文,您可以了解语音聊天室服务端的集成操作。
前提条件
操作步骤
主要功能说明
- 生成随机用户,并返回用户信息。
访问地址:/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);