Skip to content

Commit a99ea7e

Browse files
committed
Added participant list in voice room
1 parent 8b15ea7 commit a99ea7e

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed

src/main/java/org/spacehub/controller/voiceRoom/VoiceRoomController.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
import org.slf4j.Logger;
1313
import org.slf4j.LoggerFactory;
1414
import com.fasterxml.jackson.databind.JsonNode;
15+
1516
import java.util.ArrayList;
17+
import java.util.HashMap;
1618
import java.util.List;
1719
import java.util.Map;
1820
import java.util.UUID;
@@ -62,11 +64,10 @@ public ResponseEntity<?> joinVoiceRoom(
6264
String sessionId = janusService.createSession();
6365
String handleId = janusService.attachAudioBridgePlugin(sessionId);
6466

65-
JsonNode janusResponse = janusService.joinAudioRoom(sessionId, handleId, janusRoomId, displayName);
66-
67-
JsonNode participantsNode = janusResponse.path("plugindata").path("data").path("participants");
67+
janusService.joinAudioRoom(sessionId, handleId, janusRoomId, displayName);
68+
JsonNode participantsNode = janusService.listParticipants(sessionId, handleId, janusRoomId);
6869

69-
Map<String, Object> responseData = new java.util.HashMap<>();
70+
Map<String, Object> responseData = new HashMap<>();
7071
responseData.put("message", "Joined voice room successfully");
7172
responseData.put("janusRoomId", janusRoomId);
7273
responseData.put("sessionId", sessionId);

src/main/java/org/spacehub/service/VoiceRoom/JanusService.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public void createAudioRoom(String sessionId, String handleId, int roomId) {
111111
restTemplate.postForEntity(handleUrl, request, JsonNode.class);
112112
}
113113

114-
public JsonNode joinAudioRoom(String sessionId, String handleId, int roomId, String displayName) {
114+
public void joinAudioRoom(String sessionId, String handleId, int roomId, String displayName) {
115115
Map<String, Object> body = Map.of(
116116
"request", "join", "room", roomId, "display", displayName
117117
);
@@ -122,7 +122,24 @@ public JsonNode joinAudioRoom(String sessionId, String handleId, int roomId, Str
122122

123123
ResponseEntity<JsonNode> response = restTemplate.postForEntity(handleUrl, request, JsonNode.class);
124124
logger.info("Janus join response: {}", response.getBody());
125-
return response.getBody();
125+
}
126+
127+
public JsonNode listParticipants(String sessionId, String handleId, int roomId) {
128+
Map<String, Object> body = Map.of(
129+
"request", "listparticipants", "room", roomId
130+
);
131+
Map<String, Object> request = Map.of(
132+
"janus", "message", "transaction", UUID.randomUUID().toString(), "body", body
133+
);
134+
String handleUrl = String.format("%s/%s/%s", janusUrl, sessionId, handleId);
135+
136+
ResponseEntity<JsonNode> response = restTemplate.postForEntity(handleUrl, request, JsonNode.class);
137+
138+
if (response.getBody() != null) {
139+
return response.getBody().path("plugindata").path("data").path("list");
140+
}
141+
142+
throw new RuntimeException("Failed to get participant list from Janus");
126143
}
127144

128145
public void sendOffer(String sessionId, String handleId, String sdpOffer,

0 commit comments

Comments
 (0)