openvidu-basic-java to Livekit
This commit is contained in:
parent
dc1edc5b5b
commit
a154f555b3
@ -31,9 +31,14 @@
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.openvidu</groupId>
|
||||
<artifactId>openvidu-java-client</artifactId>
|
||||
<version>2.27.0</version>
|
||||
<groupId>io.livekit</groupId>
|
||||
<artifactId>livekit-server</artifactId>
|
||||
<version>0.5.7</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.json</groupId>
|
||||
<artifactId>json</artifactId>
|
||||
<version>20231013</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
|
||||
@ -2,70 +2,57 @@ package io.openvidu.basic.java;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
|
||||
import org.json.JSONObject;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.CrossOrigin;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import io.openvidu.java.client.Connection;
|
||||
import io.openvidu.java.client.ConnectionProperties;
|
||||
import io.openvidu.java.client.OpenVidu;
|
||||
import io.openvidu.java.client.OpenViduHttpException;
|
||||
import io.openvidu.java.client.OpenViduJavaClientException;
|
||||
import io.openvidu.java.client.Session;
|
||||
import io.openvidu.java.client.SessionProperties;
|
||||
import io.livekit.server.*;
|
||||
|
||||
@CrossOrigin(origins = "*")
|
||||
@RestController
|
||||
public class Controller {
|
||||
|
||||
@Value("${OPENVIDU_URL}")
|
||||
private String OPENVIDU_URL;
|
||||
@Value("${LIVEKIT_URL}")
|
||||
private String LIVEKIT_URL;
|
||||
|
||||
@Value("${OPENVIDU_SECRET}")
|
||||
private String OPENVIDU_SECRET;
|
||||
@Value("${LIVEKIT_API_KEY}")
|
||||
private String LIVEKIT_API_KEY;
|
||||
|
||||
private OpenVidu openvidu;
|
||||
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
this.openvidu = new OpenVidu(OPENVIDU_URL, OPENVIDU_SECRET);
|
||||
}
|
||||
@Value("${LIVEKIT_API_SECRET}")
|
||||
private String LIVEKIT_API_SECRET;
|
||||
|
||||
/**
|
||||
* @param params The Session properties
|
||||
* @return The Session ID
|
||||
* @param params The JSON object with roomName and participantName
|
||||
* @return The JWT token
|
||||
*/
|
||||
@PostMapping("/api/sessions")
|
||||
public ResponseEntity<String> initializeSession(@RequestBody(required = false) Map<String, Object> params)
|
||||
throws OpenViduJavaClientException, OpenViduHttpException {
|
||||
SessionProperties properties = SessionProperties.fromJson(params).build();
|
||||
Session session = openvidu.createSession(properties);
|
||||
return new ResponseEntity<>(session.getSessionId(), HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/token")
|
||||
public ResponseEntity<String> getToken(@RequestBody(required = true) Map<String, String> params) {
|
||||
String roomName = params.get("roomName");
|
||||
String participantName = params.get("participantName");
|
||||
|
||||
/**
|
||||
* @param sessionId The Session in which to create the Connection
|
||||
* @param params The Connection properties
|
||||
* @return The Token associated to the Connection
|
||||
*/
|
||||
@PostMapping("/api/sessions/{sessionId}/connections")
|
||||
public ResponseEntity<String> createConnection(@PathVariable("sessionId") String sessionId,
|
||||
@RequestBody(required = false) Map<String, Object> params)
|
||||
throws OpenViduJavaClientException, OpenViduHttpException {
|
||||
Session session = openvidu.getActiveSession(sessionId);
|
||||
if (session == null) {
|
||||
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
|
||||
if(roomName == null || participantName == null) {
|
||||
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
ConnectionProperties properties = ConnectionProperties.fromJson(params).build();
|
||||
Connection connection = session.createConnection(properties);
|
||||
return new ResponseEntity<>(connection.getToken(), HttpStatus.OK);
|
||||
|
||||
// By default, tokens expire 6 hours after generation.
|
||||
// You may override this by using token.setTtl(long millis).
|
||||
AccessToken token = new AccessToken(LIVEKIT_API_KEY, LIVEKIT_API_SECRET);
|
||||
token.setName(participantName);
|
||||
token.setIdentity(participantName);
|
||||
|
||||
|
||||
JSONObject metadata = new JSONObject();
|
||||
metadata.put("livekitUrl", LIVEKIT_URL);
|
||||
// add metadata to the token, which will be available in the participant's metadata
|
||||
token.setMetadata(metadata.toString());
|
||||
token.addGrants(new RoomJoin(true), new RoomName(roomName));
|
||||
|
||||
return new ResponseEntity<>(token.toJwt(), HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
server.port: 5000
|
||||
server.ssl.enabled: false
|
||||
|
||||
OPENVIDU_URL: http://localhost:4443/
|
||||
OPENVIDU_SECRET: MY_SECRET
|
||||
LIVEKIT_URL: ws://localhost:7880/
|
||||
LIVEKIT_API_KEY: http://localhost:4443/
|
||||
LIVEKIT_API_SECRET: MY_SECRET
|
||||
Loading…
x
Reference in New Issue
Block a user