그룹통화 연결
Last updated
Last updated
<!-- SDK 설치 -->
<script type="text/javascript" src="https://dev.knowledgetalk.co.kr:7102/knowledgetalk.min.js"></script>// SDK 객체 생성
let knowledgetalk = new Knowledgetalk();
// 서버 연결
knowlegetalk.init("KP-20200101-01", "eyJhbGc...").then(result => {
// 서버 연결에 실패한 경우
if(result.code !== '200'){
}
// 서버 연결 성공시에는 userId를 리턴
let userId = result.userId;
})// 방 생성 성공시에 roomId를 리턴
await knowledgetalk.createVideoRoom();// 방 입장
let roomData = await knowledgetalk.joinroom('K43254033');
// 방 입장에 실패한 경우
if(roomData.code !== '200'){
alert('joinRoom failed!');
return;
}
// 현재 방에 참가한 사용자들의 정보를 변수화
let members = roomData.members;
// 현재 방에 참가한 각각의 사용자들의 영상을 담을 콘텐츠를 생성
for(const member in members){
// 단, 나(자신)는 제외
if(member === knowledgetalk.getUserId()) continue;
createVideoBox(member)
}// localStream 객체를 생성
let localStream = await navigator.mediaDevices.getUserMedia({video: true, audio: false});
// localStream 객체를 미디어 서버에 전송
let result = await knowledgetalk.publishVideo('cam', localStream);
// 영상 전송에 실패한 경우
if(!result){
alert('publish video failed!');
}//이벤트 메시지 수신
knowledgetalk.addEventListener('presence', async event => {
let msg = event.detail;
let type = msg.type;
switch (type){
//다른 사용자의 입장을 알림
case 'join':
createVideoBox(msg.user.userId);
break;
//다른 사용자의 퇴장을 알림
case 'leave':
removeVideoBox(msg.user);
break;
//다른 사용자의 영상이 미디어 서버와 연결 되어 수신이 가능한 상태를 알림
case 'publish':
for(const feed of msg.feeds){
//영상 수신을 요청
let stream = await knowledgetalk.subscribeVideo(feed.id, feed.type);
//상대방이 입장했을때 만들어둔 video 태그인 multiVideo에 상대방의 영상을 연결
document.getElementById('multiVideo-' + feed.id).srcObject = stream;
}
break;
}
}