Javascript SDK Specification

PlayRTC SDK Overview

 

Class 구성

jssdk

Class Description
PlayRTC PlayRTC를 시작하기 위한 초기화를 수행한다. 개발자는 해당 클래스의 인스턴스를 만들면서 실제 서비스를 시작할 수 있다.
Call PlayRTC 내부에서 객체화되어 채널링, 시그널링, P2P통신을 관장한다. 방에 접속하기 위해 createChannel 을 호출하였다면 해당 Class 의 객체를 생성한다. 이는 내부에서만 사용되어 지는 클래스이다.
Media PlayRTC 내부에서 생성되는 MediaStream 을 관장하는 Class 이다. 레코딩을 수행하거나 Stream 을 잠시 Mute 시키거나 Stop 할 수 있다.
Peer PlayRTC 내부에서 객체화 되어 WebRTC PeerConnection 객체를 관장하는 Class 이다.
Data PlayRTC 내부에서 객체화 되어 Peer 간에 Data 를 주고받을 수 있는 DataChannel 관장하는 Class 이다.
PlayRTC.utils 사용자에게 유용한 util 들의 모음이다. Video 태그를 대신 생성하는 등의 유용한 기능들이 모여있다.

 


 

 

PlayRTC Class

initialize

Method Name initialize
Description PlayRTC 를 사용하기 위해 configuration 을 전달하여 인스턴스를 생성한다. 이를 통해 PlayRTC 사용을 준비 한다.
Example
app = new PlayRTC(Configuration);

 

Configuration

Name DataType Default Description
projectKey String 프로젝트 를 명시한다.
ring Boolean false 서비스 플로우에서 접속시 상대방의 허가를 받을지 여부
localMediaTarget Media null Local Video 출력 비디오태그 ID
remoteMediaTarget Media null Remote Video 출력 비디오태그 ID
 data  Boolean  true dataChannel 사용 유무를 명시한다. 기본적으로 서버에서 해당 값을 내려받으며 직접 명시할 경우 서버에서 내려받음 값음 무시한다.
 video  Object or Boolean  true 비디오 사용 유무와 설정을 명시한다. 비디오 항목에서는 기본값인 video : true 대신 설정 객체를 지정함 으로써 보다 더 세부적인 값을 지정할 수 있으며 아래와 같다.

"video" : {
    "minWidth": 320,
    "maxWidth": 1280,
    "minHeight": 180,
    "maxHeight": 720,
    "minFrameRate": 30,
    "maxFrameRate": 30
}
 audio  Boolean  true 오디오 사용 유무를 명시한다.
bandwidth  Object  { audio: 32, video: 1500, data:1638400 } 네트워크 bandwidth 를 설정한다.
preferCodec  Object  { audio: “OPUS”, video: “VP8” } 우선으로 적용할 코덱의 이름을 설정한다.

비디오의 경우 VP8, VP9, H264 등을 지정할 수 있다.

 onlyTurn  Boolean  false TURN서버만 사용 필요시 설정한다.

 

Event

Name Description
addLocalStream UserMedia 를 통해 사용자의 카메라/오디오에 대한 준비가 끝마치면 호출된다.
addRemoteStream 상대방 Peer 와 내가 연결되고 상대방의 미디어 스트림을 얻었다면 호출된다.
addDataStream 상대방 Peer 와 내가 DataChannel 로 연결되었다면 호출된다.
ring Peer 간의 연결시, 먼저 붙어 있던 Peer 가 나중에 들어온 Peer 를 허가 해야 연결이 되는 서비스 플로우라면, 이때 먼저 들어온 Peer 에게 ring 이라는 이벤트가 호출된다. 이 이벤트 내에서 상대방의 연결 요청을 수락/거절 할 수 있다.
accept 상대방 Peer 가 나의 ring 에 대해서 이를 수락 하였다면 호출된다.
reject 상대방 Peer 가 나의 ring 에 대해서 이를 거절 하였다면 호출된다.
disconnectChannel 나의 연결이 끊겼을 때 발생한다.
otherDisconnectChannel 나와 통신 중인 상대방의 연결이 끊겼을 때 발생한다.
statsChange 모든 과정에서 상태가 변경되었을 때마다 호출된다.
error 각 연결과정에서 에러가 발생했다면 호출되는 이벤트이다.

 


 

PlayRTC Class Methods

 

createChannel

Method Name createChannel
Description 채널을 생성하고 해당 채널에 접속한다.
Example
app.createChannel(options);

 

Parameters

Argument Name DataType Description
options Object 채널 생성시 채널 및 Peer 에 대한 부가 정보를 설정 한다.
options.channel Object 채널에 대한 부가 정보를 설정한다.
options.channel.channelName String 채널에 대해 별칭을 설정한다.
options.peer Object Peer 에 대한 부가 정보를 입력한다
options.peer.uid String 서비스에서 사용하고 있는 사용자 Id 를 설정한다. 예를 들어 이메일 등이 될 수 있다.
options.peer.userName String 서비스에서 사용하고 있는 사용자의 별칭을 설정한다.

 


 

connectChannel

Method Name connectChannel
Description 생성된 채널에 접속한다.
Example
app.connectChannel(“channelId”, options);

 

Parameters

Argument Name DataType Description
channelId String 접속하고자 하는 채널의 Id 를 지정한다.
options Object 채널 접속시 Peer 에 대한 부가 정보를 설정 한다.
options.peer Object Peer 에 대한 부가 정보를 입력한다
options.peer.uid String 서비스에서 사용하고 있는 사용자 Id 를 설정한다. 예를 들어 이메일 등이 될 수 있다.
options.peer.userName String 서비스에서 사용하고 있는 사용자의 별칭을 설정한다.

 


 

disconnectChannel

Method Name disconnectChannel
Description 채널에 참여하고 있는 특정 Peer 가 종료된다.
Example
app.disconnectChannel();

 

Parameters

Name DataType Description
peerId String 종료하고자 하는 Peer Id 를 전달한다. 만약 자신만 해당 채널에 나가고 싶다면 자신의 Peer Id 를 전달한다.

 


 

deleteChannel

Method Name deleteChannel
Description 채널에 참여한 모든 Peer 의 연결이 종료되며 최종 채널이 삭제된다.
Example
app.deleteChannel();

 


 

getMedia

Method Name getMedia
Description 로컬 스트림을 감싸고 있는 media 객체를 반환한다. media 객체의 기능은 다음과 같다.

  1. 음성을 레코딩할 수 있다.
  2. 음성/영상을mute 시킬 수 있다.
  3. 로컬스트림을 반환한다.
Example
app.getMedia();

 

Return

Name DataType Description
media Media 로컬 스트림을 감싸고 있는 media 객체를 반환한다

 


 

getPeerId

Method Name getPeerId
Description 자신의 PeerId 를 반환한다.
Example
app.getPeerId();

 

Return

Name DataType Description
peerId String 자신의 PeerId 를 반환한다.

 


 

getPeerByPeerId

Method Name getPeerByPeerId
Description Peer Id 를 바탕으로 Peer 객체를 반환한다.
Example
app.getPeeByrPeerId(“PeerID”);

 

Parameters

Name DataType Description
id String Peer Id를 문자열로 넘긴다.

 

Result

Name DataType Description
peer Peer WebRTC PeerConnection 객체를 감싸고 있는 wrapper 객체인 Peer 객체를 반환한다.

 


 

getPeerByUserId

Method Name getPeerByUserId
Description User Id 를 바탕으로 Peer 객체를 반환한다.
Example
app.getPeerByUserId(“UID”);

 

Parameters

Name DataType Description
id String User Id를 문자열로 넘긴다.

 

Return

Name DataType Description
peer Peer WebRTC PeerConnection 객체를 감싸고 있는 wrapper 객체인 Peer 객체를 반환한다.

 


 

searchChannel

Method Name searchChannel
Description Channel ID나 Channel Name을 통해 채널 목록을 조외한다.
Example
playrtc.searchChannel("CHANNEL_NAME", "채널 이름", function(result){
//success
}, function(xhr, payload){
// error
//payload
{
    error:{
        code:1003,
        message: "Parameter values are not correct", serice:"PlayRTC"
    }
}
}
);

 

Parameters

Name DataType Description
field_type String 검색하고자 하는 필드의 타입 (예: CHANNEL_NAME, CHANNEL_ID)
query_value String 검색하고자 하는 필드의 값
성공 콜백 함수 JSON
실패 콜백 함수 xhr, payload

 


 

getAllPeer

Method Name getAllPeer
Description 전체 Peer 객체를 반환한다.
Example
app.getAllPeer();

 

Return

Name DataType Description
peers Array Peer 객체들을 담고 있는 배열

 


 

sendText

Method Name sendText
Description 연결된 Peer 들에게 텍스트를 전송한다. 데이터는 순차적으로 전송된다. 만약 두번째 인자로 데이터를 전송받을 PeerId 또는 UserId 를 지정하였다면 해당 Peer 에게만 데이터가 전송된다.
Example
app.sendText(“MESSAGE”);

 

Parameters

Name DataType Description
data String or File 문자열을 넘긴다.
id or success String or Function Peer ID 또는 User ID, 특정 Peer 를 지정하지 않을 경우. Success 함수를 지정할 수 있다.
success or error Function 전송 성공시 콜백으로 통지 받을 함수를 지정한다.
error Function 전송 실패시 콜백으로 통지 받을 함수를 지정한다.

 

관련 이벤트

Name Description
message DataChannel 을 통해 서로 데이터를 주고 받을 때, 상대방이 보낸 데이터를 수신하는 이벤트이다.
progress DataChannel 을 통해 서로 데이터를 주고 받을 때, 상대방이 보낸 데이터의 양이 클 경우 이를 분할하여 전송 받는다. 이 경우 전체 메시지의 크기와 현재 받은 크기를 헤더 정보에 포함하게 된다. Progress 이벤트는 이 헤더 정보를 바탕으로 사용자에게 진행 상태를 알려준다.
error 데이터를 주고 받을 때 에러가 발생되면 호출된다.

 


 

sendFile

Method Name sendFile
Description 연결된 Peer 들에게 파일을 전송한다. 데이터는 순차적으로 전송된다. 예를 들어 파일 A 와 파일 B 는 동시에 전송되지 않고 파일 A 가 전송을 완료한 후에 파일 B 를 전송하게 된다. 만약 두번째 인자로 데이터를 전송받을 PeerId 또는 UserId 를 지정하였다면 해당 Peer 에게만 데이터가 전송된다.
Example
app.sendFile(file);

Parameters

Name DataType Description
data String or File 파일 객체를 넘긴다.
id or success String or Function Peer ID 또는 User ID, 특정 Peer 를 지정하지 않을 경우. Success 함수를 지정할 수 있다.
success or error Function 전송 성공시 콜백으로 통지 받을 함수를 지정한다.
error Function 전송 실패시 콜백으로 통지 받을 함수를 지정한다.

관련 이벤트

Name Description
message DataChannel 을 통해 서로 데이터를 주고 받을 때, 상대방이 보낸 데이터를 수신하는 이벤트이다.
progress DataChannel 을 통해 서로 데이터를 주고 받을 때, 상대방이 보낸 데이터의 양이 클 경우 이를 분할하여 전송 받는다. 이 경우 전체 메시지의 크기와 현재 받은 크기를 헤더 정보에 포함하게 된다. Progress 이벤트는 이 헤더 정보를 바탕으로 사용자에게 진행 상태를 알려준다.
error 데이터를 주고 받을 때 에러가 발생되면 호출된다.

 


userCommand

Method Name userCommand
Description 연결된 Peer 들에게 텍스트를 전송한다. sendText Method 와 달리 해당 기능은 웹소켓을 이용하여 서버를 통해 전송된다.만약 두번째 인자로 데이터를 전송받을 PeerId 또는 UserId 를 지정하였다면 해당 Peer 에게만 데이터가 전송된다.
Example
app.userCommand(“MESSAGE”);

 

Parameters

Name DataType Description
data String 문자열 또는 파일을 넘긴다.
id String Peer ID 또는 User ID

 

관련 이벤트

Name Description
userCommnand 웹소켓을 통해 서로 데이터를 주고 받을 때, 상대방이 보낸 데이터를 수신하는 이벤트이다.

 


 

getChannelList

Method Name getChannelList
Description 서버에서 생성된 전체 채널 목록을 반환한다.
Example
app.getChannelList(function(data){
  //success
}, function(err){
  //error
});

 

Parameters

Name DataType Description
success Function 정상적으로 채널 목록을 가져왔을 경우 발생할 function 을 지정한다. 해당 function 에는 채널 목록이 인자로 전달된다.
error Function 에러가 발생했을 경우 호출될 function 을 지정한다. 해당 function 에는 에러 내용이 인자로 전달된다.

 


 

getChannel

Method Name getChannel
Description 서버에서 특정 채널에 대한 정보를 반환한다.
Example
app.getChannel(“ChannelId”, function(data){
  //success
}, function(err){
  //error
});

 

Parameters

Name DataType Description
channelId String 가져올 Channel id 를 지정한다. 그럼 해당 채널의 정보를 반환받는다.
success Function 정상적으로 채널 정보를 가져왔을 경우 발생할 function 을 지정한다. 해당 function 에는 채널 정보가 인자로 전달된다.
error Function 에러가 발생했을 경우 호출될 function 을 지정한다. 해당 function 에는 에러 내용이 인자로 전달된다.

 


 

getPeerList

Method Name getPeerList
Description 서버에서 특정 채널에 접속해 있는 Peer 들의 전체 목록을 반환한다.
Example
app.getPeerList(“ChannelId”, function(data){
  //success
}, function(err){
  //error
});

 

Parameters

Name DataType Description
channelId String Channel id 를 지정한다. 그럼 해당 채널에 포함된 모든 Peer 의 목록을 반환받는다.
success Function 정상적으로 Peer 목록을 가져왔을 경우 발생할 function 을 지정한다. 해당 function 에는 Peer 목록이 인자로 전달된다.
error Function 에러가 발생했을 경우 호출될 function 을 지정한다. 해당 function 에는 에러 내용이 인자로 전달된다.

 


 

getPeer

Method Name getPeer
Description 서버에서 특정 Peer 에 대한 정보를 반환한다.
Example
app.getPeer(“ChannelId”, “PeerId”, function(data){
  //success
}, function(err){
  //error
});

 

Parameters

Name DataType Description
channelId String Channel id 를 지정한다.
peerId String 해당 채널에 참여하고 있는 Peer 의 Id 를 지정한다.
success Function 정상적으로 Peer 정보를 가져왔을 경우 발생할 function 을 지정한다. 해당 function 에는 Peer 정보가 인자로 전달된다.
error Function 에러가 발생했을 경우 호출될 function 을 지정한다. 해당 function 에는 에러 내용이 인자로 전달된다.

 


 

accept

Method Name accept
Description 상대방으로부터 ring이 도착하였을 때, accept method 로 이를 수락할 수 있다.
Example
app.on("ring", function(peerid, userid){
  app.accept(peerId);
});

 

Parameters

Name DataType Description
peerId String 해당 채널에 참여하고 있는 Peer 의 Id 를 지정한다.
userId String 상대방의 고유한 서비스 ID

 

관련 이벤트

Name Description
ring PlayRTC 의 이벤트이다. Peer 간의 연결시, 먼저 붙어 있던 Peer 가 나중에 들어온 Peer 를 허가 해야 연결이 되는 서비스 플로우라면, 이때 먼저 들어온 Peer 에게 ring 이라는 이벤트가 호출된다. 이 이벤트 내에서 상대방의 연결 요청을 수락/거절 할 수 있다.
accept 상대방의 ring 이벤트에서 자신을 수락 하였다면 발생하는 이벤트이다.

 


 

reject

Method Name reject
Description 상대방으로부터 ring이 도착하였을 때, reject method 로 이를 거절할 수 있다.
Example
app.on("ring", function(peerid, userid){
  app.reject(peerId);
});

 

Parameters

Name DataType Description
peerid String 상대방의 고유한 peerid.

 

관련 이벤트

Name Description
ring PlayRTC 의 이벤트이다. Peer 간의 연결시, 먼저 붙어 있던 Peer 가 나중에 들어온 Peer 를 허가 해야 연결이 되는 서비스 플로우라면, 이때 먼저 들어온 Peer 에게 ring 이라는 이벤트가 호출된다. 이 이벤트 내에서 상대방의 연결 요청을 수락/거절 할 수 있다.
reject 상대방의 ring 이벤트에서 자신을 거절 하였다면 발생하는 이벤트이다.

 


 

startStatsReport

Method Name startStateReport
Description 지정한 상대 peer 와의 네트워크 품질 및 미디어 품질 알 수 있는 정보를 반환하는 타이머를 시작한다.
Example
app.on("addRemoteStream", function(peerid, userid, stream){
  app.startStateReport(peerid, 5000, function(report){
    console.log(report);
  })
});

Parameters

Name DataType Description
peerid String 상대방의 고유한 peerid.
interval number 타이머의 interval 정수. 예) 1000 -> 1초
callback Function 정보를 반환받아 처리할 함수

startStatsReport 메소드에서는 다음 사항을 확인할 수 있다.

Configuration
설명
localCandidate P2P연결 수립 후 로컬 연결 Candidate Type을 반환한다
remoteCandidate P2P연결 수립 후 Peer의  연결 Candidate Type을 반환한다.
localFrameWidth 상대방에게 전송하는 로컬 영상의 width값을 반환한다.
localFrameHeight 상대방에게 전송하는 로컬 영상의 height값을 반환한다.
remoteFrameWidth 상대방으로부터 수신한 영상의 width값을 반환한다.
remoteFrameHeight 상대방으로부터 수신한 영상의 height값을 반환한다.
localFrameRate 상대방에게 전송하는 로컬 영상의 frame-rate값을 반환한다.
remoteFrameRate 상대방으로부터 수신한 영상의 frame-rate값을 반환한다.
availableSendBandwidth 상대방에게 전송가능한 네트워크 Bandwidth값을 반환한다.
availableReceiveBandwidth 상대방으로부터 수신 가능한 네트워크 Bandwidth값을 반환한다.
rtt RTT(Round Trip Time)값을 반환한다.
rttRating eModelRating 등급을 반환한다.
localAudioFractionLost 로컬 Audio FractionLost를 을 반환한다.
localVideoFractionLost 로컬 Video FractionLost를 을 반환한다.
localAudioFractionRating 로컬 Audio Fraction Lost  기본으로 해당 Fraction Lost  해당하는 품질 레벨을 반환한다.

5등급 분류.

1 : 사용자가 매우 만족함,  0 ~ 50

2 : 사용자가 대부분 만족함, 51 ~ 150

3 : 사용자가 대체로 만족함, 151~ 200

4 : 사용자가 불만족함 , 201~ 250

5 : 사용자가 매우 불만족함, 151 이상

localVideoFractionRating 로컬 Video Fraction Lost  기본으로 해당 Fraction Lost  해당하는 품질 레벨을 반환한다.

5등급 분류.

1 : 사용자가 매우 만족함,  0 ~ 40

2 : 사용자가 대부분 만족함, 41 ~ 55

3 : 사용자가 대체로 만족함, 56~ 70

4 : 사용자가 불만족함 , 71~ 90

5 : 사용자가 매우 불만족함, 90 이상

remoteAudioFractionLost 상대방의 Audio FractionLost를 을 반환한다.
remoteVideoFractionLost 상대방의 Video FractionLost를 을 반환한다.
remoteAudioFractionLostRating 상대방의 Audio Fraction Lost  기본으로 해당 Fraction Lost  해당하는 품질 레벨을 반환한다.

5등급 분류.

1 : 사용자가 매우 만족함,  0 ~ 50

2 : 사용자가 대부분 만족함, 51 ~ 150

3 : 사용자가 대체로 만족함, 151~ 200

4 : 사용자가 불만족함 , 201~ 250

5 : 사용자가 매우 불만족함, 151 이상

remoteVideoFractionLostRating 상대방의 Video Fraction Lost  기본으로 해당 Fraction Lost  해당하는 품질 레벨을 반환한다.

5등급 분류.

1 : 사용자가 매우 만족함,  0 ~ 40

2 : 사용자가 대부분 만족함, 41 ~ 55

3 : 사용자가 대체로 만족함, 56~ 70

4 : 사용자가 불만족함 , 71~ 90

5 : 사용자가 매우 불만족함, 90 이상

fractionRating  기본적으로 remoteVideoFractionLostRating 와 같다. SDK 사용자에게 보다 쉽게 제공하기 위해 단축화하여 제공한다.

5등급 분류.

1 : 사용자가 매우 만족함,  0 ~ 40

2 : 사용자가 대부분 만족함, 41 ~ 55

3 : 사용자가 대체로 만족함, 56~ 70

4 : 사용자가 불만족함 , 71~ 90

5 : 사용자가 매우 불만족함, 90 이상

 


stopStatsReport

Method Name stopStatsReport
Description startStatsReport  에 의해 시작된 타이머를 정지 시킨다.
Example
app.stopStatsReport("peerid");

Parameters

Name DataType Description
peerid String 상대방의 고유한 peerid.

 


Peer Class Method

 

getDataChannel

Method Name getDataChannel
Description Peer 객체가 가지고 있는 DataChannel 객체를 반환한다.
Example
var mine = app.getPeerByPeerId(“peerid”);

var dc = mine.getDataChannel();

 

return

Name DataType Description
dc Data DataChannel 객체를 반환한다.

 


 

getMedia

Method Name getMedia
Description Remote 스트림을 감싸고 있는 media 객체를 반환한다. media 객체의 기능은 다음과 같다.

  1. 음성을 레코딩할 수 있다.
  2. 음성/영상을mute 시킬 수 있다.
  3. Remote 스트림을 반환한다.
Example
var mine = app.getPeerByPeerId(“peerid”);

var media = mine.getMedia();

 

return

Name DataType Description
media Media media 객체를 반환한다.

 


 

getStats

Method Name getStats
Description Peer to Peer 의 성능 측정을 위한 지표를 반환한다. 패킷 Loss 율, Jitter 등의 성능 정보를 확인 할 수 있다.
Example
var mine = app.getPeerByPeerId(“peerid”);

mine.getStats(function(stats) { console.log(stats) });

 

Parameters

Name DataType Description
statsFn Function stats 데이터를 통지받을 함수를 지정한다.

 


 

Data Class Method

 

send

Method Name send
Description 텍스트 또는 파일을 파라미터로 전달하여 상대 Peer 에게 전송한다.
Example
var mine = app.getPeerByPeerId(“peerid”);

var dc = mine.getDataChannel();

dc.send(“MESSAGE”);

 

Parameters

Name DataType Description
data String or File 텍스트 또는 파일을 파라미터로 전달하여 상대 Peer 에게 전송한다.
success Function 정상적으로 전송했다면 호출할 함수를 명시한다.
error Function 전송하지 못했다면 호출할 함수를 명시한다.

 

관련 이벤트

Name Description
message DataChannel 을 통해 서로 데이터를 주고 받을 때, 상대방이 보낸 데이터를 수신하는 이벤트이다.
progress DataChannel 을 통해 서로 데이터를 주고 받을 때, 상대방이 보낸 데이터의 양이 클 경우 이를 분할하여 전송 받는다. 이 경우 전체 메시지의 크기와 현재 받은 크기를 헤더 정보에 포함하게 된다. Progress 이벤트는 이 헤더 정보를 바탕으로 사용자에게 진행 상태를 알려준다.
error 데이터를 주고 받을 때 에러가 발생되면 호출된다.

 


 

Media Class Method

 

record

Method Name record
Description 스트림의 오디오/비디오를 캡처한다. 파이어폭스에서만 지원된다. 크롬은 브라우저 버전 48 부터 초기 형태로 지원될 예정이나 크롬의 기능 업데이트 현황을 파악해 볼 필요가 있다.

PlayRTC 객체 생성시 audio만 쓸지, video 를 함께 쓸지 설정하는 부분에 따라 audio 를 녹음하거나 video 를 녹화하거나 한다.

Example
//audio 만 녹화
var app = new PlayRTC({
     audio: true
     video: false
});

//audio, video 를 함께 녹화
var app = new PlayRTC({
    audio: true,
    video: true
});

//Local

app.getMedia().record();
app.getMedia().record();

//Remote

var peer = conn.getPeerById(“id”);
peer.getMedia().record();

Parameters

Name DataType Description
fn Funtion 생략가능한 옵션으로 직전 3초간의 녹화 결과를 함수의 인자로 전달 받는다.

 


 

recordStop

Method Name recordStop
Description 현재 녹음 중인 오디오 또는 비디오의 를 중단한다. 이 때 인자로 함수를 넘겨주어야 한다. 이 메소드가 불려지기 바로 직전까지 캡처한 결과인 blob 을 해당 함수의 인자로 전달된다.만약 해당 blob 을 로컬에 다운로드 하고 싶다면 오디오의 경우 wav 형식의 파일로 저장해야한다. 비디오의 경우 webm 형식으로 저장해야한다.
Example
app.getMedia().recordStop(function(blob){
  //audio
  PlayRTC.utils.fileDownload(blob, “localAudio.wav”);

  //video
  PlayRTC.utils.fileDownload(blob, “localVideo.webm”);
});

 

Parameters

Name DataType Description
fn Funtion 녹음이 완료되면 통지받을 함수를 지정한다. 해당 함수에는 녹음의 결과인 blob 객체가 전달된다. 해당 객체를 utils 밑에 있는 fileDownload 에 전달하면 다운로드 할 수 있다.PlayRTC.utils.fileDownload(blob, “locaAudio.wav”);

 


 

 getStream

Method Name getStream
Description 스트림을 반환한다. PlayRTC 인스턴스의 getMedia() 를 통했다면 local 스트림을, Peer 에서 getMedia() 를 호출했다면 Remote Stream 을 반환한다.
Example
//Local
app.getMedia().getStream();

//Remote
var peer = app.getPeerById(“id”);
peer.getMedia().getStream();

 

Return

Name DataType Description
stream MediaStream 스트림을 반환한다.

 


 

getVideoTrack

Method Name getVideoTrack
Description 비디오 트랙을 반환한다.. PlayRTC 인스턴스의 getMedia() 를 통했다면 local 비디오 트랙을, Peer 에서 getMedia() 를 호출했다면 Remote 비디오 트랙을 반환한다.
Example
//Local
app.getMedia().getVideoTrack();

//Remote
var peer = app.getPeerById(“id”);
peer.getMedia().getVideoTrack();

 

Return

Name DataType Description
track MediaVideoTrack 비디오 트랙을 반환한다.

 


 

getAudioTrack

Method Name getAudioTrack
Description 오디오 트랙을 반환한다.. PlayRTC 인스턴스의 getMedia() 를 통했다면 local 오디오 트랙을, Peer 에서 getMedia() 를 호출했다면 Remote 오디오 트랙을 반환한다.
Example
//Local
app.getMedia().getAudioTrack();

//Remote
var peer = app.getPeerById(“id”);
peer.getMedia().getAudioTrack();

 


 

 

audioMute

Method Name audioMute
Description False 를 지정할 경우 audio 를 비활성화 한다.True 를 지정할 경우 audio 를 활성화 한다.
Example
//Local
app.getMedia().audioMute(true)

//Remote
var peer = app.getPeerById(“id”);
peer.getMedia().audioMute(true);

 

Parameters

Name DataType Description
enabled Boolean True, false 를 전달한다.

 


 

videoMute

Method Name videoMute
Description False 를 지정할 경우 video 를 비활성화 한다.True 를 지정할 경우 video 를 활성화 한다.
Example
//Local
app.getMedia().videoMute(true)

//Remote
var peer = app.getPeerById(“id”);
peer.getMedia().videoMute(true);

 

Parameters

Name DataType Description
enabled Boolean True, false 를 전달한다.

 


 

mute

Method Name mute
Description 비디오/오디오를 모두 비활성화/활성화 한다.
Example
//Local
app.getMedia().mute(true);

//Remote
var peer = app.getPeerById(“id”);
peer.getMedia().mute(true);

 

Parameters

Name DataType Description
enabled Boolean true, false 를 전달한다.

 


 

PlayRTC.utils Method

 

fileDownload

Method Name fileDownload
Description 데이터 채널을 통해 파일을 전송받았다면 해당 util method 로 파일을 로컬로 다운로드 할 수 있다.
Example
PlayRTC.utils.fileDownload(message.blob, “File Name”);

 

Parameters

Name DataType Description
blob Blob 다운로드할 Blob
fileName String 파일 확장자를 포함하는 파일 이름

 


 

createVideo

Method Name createVideo
Description 비디오 태그를 대신 생성하여 반환해준다. 두번째 인자로 video 태그에 대한 속성을 객체로 지정할 수 있다.
Example
app.on("addLocalStream", function(stream){
  var video = PlayRTC.utils.createVideo(stream, {
    autoPlay: true,
    controls: false, // Can be overriding.
    width: "100%",
    height: "100%"
  });
  document.getElementById("container").appendChild(video);
});

app.on("addRemoteStream", function(peerid, userid, stream){
  var video = PlayRTC.utils.createVideo(stream, {
    autoPlay: true,
    controls: false, // Can be overriding.
    width: "100%",
    height: "100%"
  });
  document.getElementById("container").appendChild(video);
});

 

Parameters

Name DataType Default Description
stream MediaStream 비디오가 표현할 스트림 객체
config Object 비디오 태그 속성을 객체로 지정하며 해당 객체의 속성들은 아래 4가지 입니다.
config.autoPlay Boolean true 비디오를 바로 재생할지 여부
config.controls Boolean true 비디오 컨트롤러를 표시할지 여부
config.width String “100%” 동영상 가로 크기
config.height String “100%” 동영상 세로 크기

 

Return

Name DataType Description
video Video Element 비디오 태그를 반환한다.

 


 

createAudio

Method Name createAudio
Description 오디오 태그를 대신 생성하여 반환해준다. 두번째 인자로 audio 태그에 대한 속성을 객체로 지정할 수 있다.
Example
app.on("addLocalStream", function(stream){
  var audio = PlayRTC.utils.createAudio(stream{
    autoPlay: true,
    controls: false, //Can be overriding.
    width: "100%",
    height: "100%"
  });
  document.getElementById("container").appendChild(audio);
});

app.on("addRemoteStream", function(peerid, userid, stream){
  var audio = PlayRTC.utils.createAudio(stream{
    autoPlay: true,
    controls: false, //Can be overriding.
    width: "100%",
    height: "100%"
  });
  document.getElementById("container").appendChild(audio);
});

 

Parameters

Name DataType Default Description
stream MediaStream 오디오가 표현할 스트림 객체
config Object 오디오 태그 속성을 객체로 지정하며 해당 객체의 속성들은 아래 4가지 입니다.
config.autoPlay Boolean true 오디오를 바로 재생할지 여부
config.controls Boolean true 오디오 컨트롤러를 표시할지 여부

 

Return

Name DataType Description
audio Audio Element Audio 태그를 반환한다.

 


 

createObjetURL

Method Name createObjectURL
Description 미디어 스트림을 인자로 받아 스트림의 참조를 가리키는 새로운 객체 URL 을 생성한다. Javascript 의 URL 객체의 createObjectURL method 를 이용한다.
Example
PlayRTC.utils.createObjectURL(stream);

 

Parameters

Name DataType Default Description
stream MediaStream 미디어 스트림 객체

 

Return

Name DataType Description
result String 데이터의 참조를 가리키는 객체 URL

 


 

browser

Method Name browser
Description 사용자 브라우저의 이름과 버전을 반환한다.
Example
PlayRTC.utils.browser;

 

Return

Name DataType Description
result Object {name: “chrome”,version: “37.0.2062.124”}

 


 

platform

Method Name platform
Description 사용자의 OS 를 반환한다..
Example
PlayRTC.utils.platform;

 

Return

Name DataType Description
result String “windows”, “mac”, “ios”, “android”, “linux”

 


 

exportLog

Method Name exportLog
Description PlayRTC Application 수행 중에 생성된 로그들을 로컬에 다운로드 한다. 이렇게 다운로드한 로그는 Debugging 에 활용될 수 있다.최대 10일치의 로그를 저장하고 이를 다운로드 한다.
Example
PlayRTC.utils.exportLog();

 


 

debugViewShow

Method Name debugViewShow
Description PlayRTC Application 수행 중 생성된 로그를 화면에 출력한다. 이는 PlayRTC extention 인 playrtc-debug-view.js 를 삽입해야만 활성화 되는 기능이다. debugViewShow() 함수를 호출하였다면 화면 하단에 로그뷰가 나타나고 여기에서 각 로그를 필터하여 보거나 다운로드 할 수 있다.
Example
PlayRTC.utils.debugViewShow();

 


 

debugViewHide

Method Name debugViewHide
Description 출력된 로그를 화면에서 다시 감춘다.
Example
PlayRTC.utils.debugViewHide();


strFormat

Method Name strFormat
Description 간단한 문자열 포맷을 위한 함수이다.
Example
var str = PlayRTC.utils.strFormat("{0} {1}", "Hello", "World!");

console.log(str);

 


 

dataChannelSupport

Method Name dataChannelSupport
Description 사용자 브라우저가 dataChannel 을 지원하는지 여부를 반환한다.
Example
console.log(utils.dataChannelSupport);

 


 

userMediaSupport

Method Name userMediaSupport
Description 사용자 브라우저가 미디어 장치를 지원하는지 여부를 반환한다.
Example
console.log(utils.userMediaSupport);

 


 

webRtcSupport

Method Name webRtcSupport
Description 사용자 브라우저가 WebRTC 기능을 지원하는지 여부를 반환한다.
Example
console.log(utils.webRtcSupport);

 


 

language

Method Name language
Description 사용자 브라우저의 언어설정을 반환한다.
Example
console.log(utils.language);


 

nation

Method Name nation
Description 사용자 브라우저의 국가설정을 반환한다.
Example
console.log(utils.nation);


 

PlayRTC Class Event

 

addLocalStream

Event Name addLocalStream
Description PlayRTC 인스턴스가 생성되고 UserMedia 를 통해 사용자의 카메라/오디오에 대한 준비가 끝마치면 호출된다. 만약 localVideoTarget Configuration 이 지정되어 있지 않다면, 여기서 자신의 비디오 태그등의 UI 를 생성할 수 있다.
Example
app.on("addLocalStream", function(localStream){
  //UI 등의 작업을 수행
});

 

Parameters

Argument Name DataType Description
localStream MediaStream 사용자의 카메라/오디오로부터 얻어진 스트림 객체

 


 

addRemoteStream

Event Name addRemoteStream
Description 상대방 Peer 와 내가 연결되고 상대방의 미디어 스트림을 얻었다면 호출된다. 만약 remoteVideoTarget Configuration 이 지정되어 있지 않다면, 여기서 상대의 비디오 태그등의 UI 를 생성할 수 있다.
Example
app.on("addRemoteStream", function(peerid, userid, stream){

});

 

Parameters

Argument Name DataType Description
remoteStream MediaStream 접속에 성공한 상대방의 mediaStream
Peerid String 접속에 성공한 상대방의 peer 고유 id
Uid String 접속에 성공한 상대방의 peer 서비스 id

 


 

addDataStream

Event Name addDataStream
Description 상대방 Peer 와 내가 연결되고 상대방의 DataChannel 을 생성하였다면 호출되는 이벤트이다.
Example
app.on("addDataStream", function(peerid, uid, dataChannel){

});

 

Parameters

Argument Name DataType Description
peerid MediaStream 접속에 성공한 상대방의 peer 고유 id
userid String 접속에 성공한 상대방의 user 고유 id
dataChannel Data 접속에 성공한 상대방의 DataChannel 객체의 Wrapper. 이를 통해 수신 이벤트를 설정할 수 있다.

 


 

ring

Event Name ring
Description Peer 간의 연결시, 먼저 붙어 있던 Peer 가 나중에 들어온 Peer 를 허가 해야 연결이 되는 서비스 플로우라면, 이때 먼저 들어온 Peer 에게 ring 이라는 이벤트가 호출된다. 이 이벤트 내에서 상대방의 연결 요청을 수락/거절 할 수 있다.해당 이벤트의 첫번째 파라미터 요소인 call 객체의 accept 또는 reject 메소드를 호출하여 수락/거절을 수행할 수 있다.
Example
app.on("ring", function(peerid, userid){
  //Do something.
  //call.accept(peerId);
  //call.reject(peerId);
});

 

Parameters (v 1.0.1.02 까지)

Argument Name DataType Description
call Call PlayRTC 에서 통신을 담당하는 call 객체
peerd String 새로 접속한 peer 의 고유 id
userId String 새로 접속한 peer 의 서비스 id

 

Parameters (v 1.0.2 부터)

Argument Name DataType Description
peerd String 새로 접속한 peer 의 고유 id
userId String 새로 접속한 peer 의 서비스 id

 


 

accept

Event Name accept
Description 상대방 Peer 가 나를 ring 에 대해 수락을 하였다면 호출된다.
Example
app.on("accept", function(peerid, userid){ });

 

Parameters

Argument Name DataType Description
Peerid String 나를 수락한 peer 의 고유 id
userId String 나를 수락한 peer 의 서비스 id

 


 

reject

Event Name reject
Description 상대방 Peer 가 나를 ring 에 대해 거절 하였다면 호출된다.
Example
app.on("reject", function(peerid, userid){ });

 

Parameters

Argument Name DataType Description
peerid String 나를 거절한 peer 의 고유 id
userId String 나를 거절한 peer 의 서비스 id

 


 

connectChannel

Event Name connectChannel
Description 채널에 접속하였을 때 발생한다.
Example
app.on("connectChannel", function(channelId){ });

 

Parameters

Argument Name DataType Description
channelId String 접속한 채널 Id.

 


 

disconnectChannel

Event Name disconnectChannel
Description 나의 P2P 통신이 끊겼을 때 발생한다.
Example
app.on("disconnectChannel", function(){ });

 


 

otherDisconnectChannel

Event Name otherDisconnectChannel
Description 나와 통신 중인 상대방의 연결이 끊겼을 때 발생한다.
Example
app.on("disconnectChannel", function(){
});

 

Parameters

Argument Name DataType Description
peerid String 상대방의 고유한 peerid.
uid String 상대방의 고유한 서비스 id

 


 

stateChange

Event Name stateChange
Description 모든 과정에서 상태가 변경되었을 때마다 호출된다..
Example
app.on("stateChange", function(state, peerid, userid){});

 

Parameters

Argument Name DataType Description
state String 주 단계의 문자열을 전달한다. 다음 5가지 경우가 순서대로 존재한다.

  1. CHANNELING
  2. SIGNALING
  3. CHECKING
  4. CONNECTED
  5. DISCONNECTED
peerid String 상대방이 식별되는 순간인 SIGNALING 단계부터 존재하며 상대방의 peer id 를 나타낸다.
userid String 상대방이 식별되는 순간인 SIGNALING 단계부터 존재하며 상대방의 user id 를 나타낸다.

 


 

error

Event Name error
Description 각 연결 과정에서 에러가 발생했다면 호출되는 이벤트이다.
Example
app.on("error", function(code, desc, payload){});

 

Parameters

Argument Name DataType Description
code String 해당 에러를 대표하는 코드가 전달된다.
desc String 에러에 대한 상세 설명이 전달된다.
payload Object 서버(서비스 서버 또는 채널, 시그널 서버)에서 전달되어지는 에러 원문이 전달된다.

 

Error Code에 대한 자세한 설명은 문제해결 문서를 참고

 


 

userCommand

Event Name userCommnad
Description 연결된 Peer 들에게 텍스트를 전송한다. sendText Method 와 달리 해당 기능은 웹소켓을 이용하여 서버를 통해 전송된다.
Example conn.on(“userCommnad”, function( peerid, data){});

 

Parameters

Argument Name DataType Description
peerid String 데이터를 전송한 상대방의 고유한 peerid.
userid String 데이터를 전송한 상대방의 고유한 서비스 아이디
data String 상대방이 전송한 데이터

 


 

DataChannel Event

 

message

Event Name message
Description DataChannel 을 통해 서로 데이터를 주고 받을 때, 상대방이 보낸 데이터를 수신하는 이벤트이다.
Example
app.on("addDataStream", function(peerid, userid, dataChannel){
  dataChannel.on("message", function(message){
  });
});

 

Parameters – text 일 경우

Argument Name DataType Description
message Object 상대방이 보낸 메시지에 대한 헤더와 메시지 본문을 담고 있다.
message.peerId String 데이터를 전송한 상대방의 고유한 PeerId
message.id Number 전송 받은 메시지의 고유한 id 값.
message.totalSize Number 전송 받은 메시지의 전체 길이. 예를 들어 “TEXT” 를 전송 받았다면 해당 값은 4 이다.
message.type String 메시지의 Type. “text”   로 표시된다.
message.data String 전송 받은 메시지 데이터 본문.

 

Parameters – file 일 경우

Argument Name DataType Description
message Object 상대방이 보낸 메시지에 대한 헤더와 메시지 본문을 담고 있다.
message.peerId String 데이터를 전송한 상대방의 고유한 PeerId
message.id Number 전송 받은 메시지의 고유한 id 값.
message.totalSize Number 전송 받은 메시지의 전체 길이. 예를 들어 “TEXT” 를 전송 받았다면 해당 값은 4 이다.
message.type String 메시지의 Type. “binary” 로 표시된다.
message.blob Blob 전송 받은 메시지 데이터 본문으로 blob 으로 표현된다.
message.fileName String 파일의 이름
message.mimeType String 파일의 mime Type.

 


 

progress

Event Name Progress
Description DataChannel 을 통해 서로 데이터를 주고 받을 때, 상대방이 보낸 데이터의 양이 클 경우 이를 분할하여 전송 받는다. 이 경우 전체 메시지의 크기와 현재 받은 크기를 헤더 정보에 포함하게 된다. Progress 이벤트는 이 헤더 정보를 바탕으로 사용자에게 progress 할 수 있게 해준다.
Example
app.on("addDataStream", function(peerid, userid, dataChannel){
  dataChannel.on("progress", function(messageInfo){
  });
});

 

Parameters – text 일 경우

Argument Name DataType Description
messageInfo Object 상대방이 보낸 메시지에 대한 헤더. 전체 크기, 현재 받은 크기.
messageInfo.peerId String 데이터를 전송한 상대방의 고유한 PeerId
messageInfo.id Number 전송 받은 메시지의 고유한 id 값.
messageInfo.fragCount Number 전송 받은 메시지의 전체 패킷 개수. 곧 전체 페이지 개수라고도 할 수 있다. 예를 들어 해당 메시지가 10번에 걸쳐 보내지게 된다면 해당 값은 10이 된다.
messageInfo.fragIndex Number 전송 받은 메시지가 현재 몇 번째 보내지고 있는지를 표시 한다. 해당 값은 0 부터 시작한다. 만약 fragCount가 10고 fragIndex가 0 이라면 첫 번째 받은 것이고 9라면 마지막 패킷을 받은 것이다.
messageInfo.totalSize Number 전체 메시지 본문의 데이터 길이이다. 만약 10번에 걸쳐 받았다면 10번의 본문 데이터의 길이를 모두 합친 것이다.
messageInfo.fragSize Number 현재 받고 있는 순서에 해당 하는 메시지 본문 데이터 길이. 만약 0번째를 받고 있다면 0번째의 본문 데이터 길이를 말한다.

 

Parameters – file 일 경우

Argument Name DataType Description
messageInfo Object 상대방이 보낸 메시지에 대한 헤더. 전체 크기, 현재 받은 크기.
messageInfo.peerId String 데이터를 전송한 상대방의 고유한 PeerId
messageInfo.id Number 전송 받은 메시지의 고유한 id 값.
messageInfo.fileName String 전송 받은 파일의 이름
messageInfo.mimeType String 전송 받은 파일의 mime type.
messageInfo.fragCount Number 전송 받은 메시지의 전체 패킷 개수. 곧 전체 페이지 개수라고도 할 수 있다. 예를 들어 해당 메시지가 10번에 걸쳐 보내지게 된다면 해당 값은 10이 된다.
messageInfo.fragIndex Number 전송 받은 메시지가 현재 몇 번째 보내지고 있는지를 표시 한다. 해당 값은 0 부터 시작한다. 만약 fragCount가 10고 fragIndex가 0 이라면 첫 번째 받은 것이고 9라면 마지막 패킷을 받은 것이다.
messageInfo.fragSize Number 전체 메시지 본문의 데이터 길이이다. 만약 10번에 걸쳐 받았다면 10번의 본문 데이터의 길이를 모두 합친 것이다.
messageInfo.totalSize Number 현재 받고 있는 순서에 해당 하는 메시지 본문 데이터 길이. 만약 0번째를 받고 있다면 0번째의 본문 데이터 길이를 말한다.

 


 

error

Event Name error
Description 데이터를 주고 받을 때 에러가 발생되면 이벤트가 호출된다.
Example
app.on("addDataStream", function(peerid, userid, dataChannel){
  dataChannel.on("error", function(err){ });
});

 

Parameters

Argument Name DataType Description
err Object or String 에러 객체 또는 문자열을 전달 받는다. DataChannel 의 에러 이벤트가 호출되면 에러 객체가 전달되고 전송 또는 데이터를 받았을 때 파싱과정에서 에러가 나면 SEND_ERROR, RECEIVE_ERROR 문자열을 전달 받는다.

 

 

Play RTC

서비스 체험

Play RTC build PlaygrOund

나만의 플레이그라운드를 만들어 친구를 초대해보세요 !

www.playrtc.com/

번거로운 가입이나 설치 없이ID만 만들어서 영상통화나 파일 공유, 채팅 서비스를 무료로 즐겨보세요.

 

Play RTC

서비스 체험

개설한 Playground 주소를 복하해서 친구에게 보내조세요. 친구가 Playground에 접속하면 이곳에 친구의 영상과 음성이 나타납니다. Waiting..

Photo

X
이미지 미리보기
이미지
 

서비스 체험

 

서비스 체험

서비스 체험은 크롬과 파이어폭스 브라우저에 최적화되어 있습니다.
크롬 또는 파이어폭스 브라우저를 설치 후 다시 이용해주세요.