Openvidu API

[세션을 생성하고 연결하는 과정]


1. 세션을 생성할 때 사용하는 클래스

1-1) SessionProperties 클래스

: OpenVidu Java Client 라이브러리에서 사용되는 클래스로서, 세션 생성 시에 세션의 속성을 설정하기 위해 사용한다.

  • 다양한 설정을 지정할 수 있다.
    Ex) 세션 이름, 세션의 녹화 여부, 세션의 브로드캐스트 여부

  • Code

// Create a new session with properties
SessionProperties properties = new SessionProperties.Builder()
        .name("MySession") // Set session name
        .recording(true)  // Enable recording for the session
        .broadcast(true)  // Enable broadcasting for the session
        .build();

// Create the session with the specified properties
Session session = openVidu.createSession(properties);
  1. SessionProperties.Builder()를 사용하여 SessionProperties 객체를 만들고, 각각의 속성을 설정한 후 build() 메서드를 호출하여 최종 SessionProperties 객체를 생성한다.

  2. 이렇게 생성된 SessionProperties 객체는 openVidu.createSession() 메서드에 전달하여 세션을 생성할 때 사용한다.

    • createSession(properties) 메소드
      • 세션의 옵션으로 세션을 생성하고 저장한다.

1-2) ConnectionProperties 클래스

: OpenVidu API를 사용하여 WebRTC 기반의 영상 통화나 영상 스트리밍과 같은 연결을 설정할 때 사용되는 옵션들을 설정하기 위한 클래스이다.
✔ 이 클래스를 사용하여 연결을 생성할 때 원하는 설정을 지정할 수 있습니다.

import io.openvidu.java.client.ConnectionProperties;
import io.openvidu.java.client.Connection;
import io.openvidu.java.client.Session;

// OpenVidu 객체가 생성되었다고 가정
OpenVidu openVidu = new OpenVidu("https://your-openvidu-server");

// 새로운 세션 생성
Session session = openVidu.createSession();

// ConnectionProperties 생성
ConnectionProperties connectionProperties = new ConnectionProperties.Builder()
    .type(ConnectionType.WEBRTC) // 연결 타입 설정 (WebRTC로 지정)
    .data("Some custom data")    // 사용자 정의 데이터 설정 (선택 사항)
    .build();

// Connection 생성
Connection connection = session.createConnection(connectionProperties);
  • ConnectionProperties 클래스에서 설정할 수 있는 옵션
    • type: 연결의 타입을 설정한다.. 주로 WebRTC 연결을 사용하므로 ConnectionType.WEBRTC 로 설정함
    • data: 사용자 정의 데이터를 설정할 수 있습니다. 이를 활용하여 연결된 사용자에 대한 추가 정보를 전달할 수 있다.
    • role : 연결의 역할을 지정한다. 주로 publishersubscriber 역할이 사용함.
      publisher는 미디어를 송출하는 역할이고, subscriber 는 미디어를 수신하는 역할이다.
    • kurentoOptions: Kurento 서버에 전달할 추가 옵션을 설정합니다. Kurento는 OpenVidu 서버의 뒷단에서 WebRTC 연결을 관리하는 데 사용되는 미디어 서버입니다.

2. 세션을 생성할 때 사용하는 메소드

2-1) createSession(properties)

: 세션의 옵션으로 세션을 생성하고 저장한다.

Session session = openVidu.createSession(properties);

2-2) getActiveSession()

: OpenVidu 클래스에서 정의된 메서드로 주어진 세션 ID에 해당하는 활성화된(현재 사용 중인) 세션을 가져오는 역할을 합니다.

public Session getActiveSession(String sessionId)
  • 주어진 'sessionId'에 해당하는 세션을 'activeSessions' 맵에서 찾아서 반환한다.
  • 'activeSessions' 맵은 Openvidu 클래스의 멤버 변수로 선언되어 있으며, 활성화된 세션들을 저장하는 ConcurrentHashMap이다.
  • ConcurrentHashMap은 여러 스레드에서 동시에 접근이 가능한 동시성 맵 자료구조이다.

📌 getActiveSession 메서드를 호출하여 특정 세션을 가져올 수 있으며, 해당 세션은 OpenVidu 클래스에서 관리되고 있는 활성화된 세션들 중 하나일 것이다.
📌 세션 객체에는 해당 세션의 정보와 속성들이 담겨있으며, 필요에 따라 세션 객체의 메서드들을 사용하여 세션을 관리하거나 상태를 확인할 수 있다.


3. 전체적인 과정 설명

  1. SessionProperties클래스를 활용해 requestBody로 받아온 Json 형식 데이터를 역직렬화해서 객체로 넣어준다.

  2. session.createSession(properties) 로 ConcurrentHashMap 형태의 멤버변수로 선언되어있는 activeSessions에 새로운 세션을 넣어준다.
    (key-value ➡ sessionId-session)

  3. session.ActiveSession(sessionId) 로 sessionId에 맞는 세션을 찾는다. (없으면 null 반환)

  4. ConnectionProperties로 연결에 필요한 속성을 세팅함.

  5. Connection으로 session.createConnection(properties)을 함으로써 세션을 연결함

profile
BE Developer

1개의 댓글

comment-user-thumbnail
2023년 8월 5일

정보 감사합니다.

답글 달기
Powered by GraphCDN, the GraphQL CDN