전체 글 69

[WebRTC] Kurento를 사용하여 실시간 스트리밍하기

Kurento client를 활용하여 one2many call의 흐름을 익혀보자 대략적인 그림으로 그려보면, 1명의 스트리머가 있고 N명의 Viewer들이 존재하는 아래와 같은 그림일 것이다. 대략적인 서버의 구성은 아래의 그림과 같다. 이제 본격적으로 어떤 흐름으로 1:N 스트리밍을 할 수 있는지 알아보자 Presenter가 방송 켰을 때 1. Client가 웹에 들어오면 웹소켓으로 시그널링 서버와 연결을 한다. 2. 스트리머가 스트리밍 시작 버튼을 누르면, JSON형태로 id와 sdpOffer정보를 시그널링서버에 보낸다. 스트리머가 다른 방송을 보고 있는지 또는 다른 방송을 키고 있는지 여부를 파악해야 함 id는 WebSocket통신을 할 때, 어떤 메세지를 담고 있는지 구별해주는 id 이다. Pre..

WebRTC 2021.01.25

[WebRTC] WebRTC를 공부하며 스트리밍 과정 익히기

유튜브 플랫폼에서 구독자와 소통하기 위해 라이브 방송을 킨다고 가정해보자. 스트리밍을 하기 위해 가장 먼저 해야하는 것은 웹/앱에 연결된 카메라, 마이크 등에 연결을 해야한다. (카메라, 마이크가 연결되지 않으면 스트리밍을 하는 의미가 없어진다.) 그렇다면, 어떻게 연결할 수 있을까? 연결과정을 알아보자. 1. WebRTC와 미디어 장치 1-1. 미디어 장치와 연결하기 [1] 제약조건에 맞는 카메라, 마이크를 선택해준다. const openMediaDevices = async (constraints) => { return await navigator.mediaDevices.getUserMedia(constraints); } try { const stream = openMediaDevices({'video..

WebRTC 2021.01.16

[GIT] git 캐시 삭제

GIT 캐시를 삭제해야하는 이유?? 우리가 프로젝트를 만들고 gitignore을 하지않고 git에 add, commit을 해버릴 경우가 있다. 그러면 일단 git 자체에 쓰여진 상태이기 때문에 gitignore가 먹히지 않는다. 캐쉬를 삭제하지 않으면 나중에 GIT 에 올린 후에 "아니? 나는 gitignore했는데 왜 내 개인정보가 다 올라가 있어?" 이런 경우가 발생한다. ( 나의 경험 ^_^ ) 그러니 꼬옥! 나중에 gitignore에 추가했다면 캐시를 지워주자!! ** git ignore에 반영이 되었는지 안되었는지 궁금하다면 git add . 를 한 후 git status를 쳐보자 그럼 변경된 그런 목록들이 나오는데 거기에 포함이 되어있는지 잘 확인해보자 개인정보는 너무나 소중한 것.. GIT ..

GIT 2021.01.13

[WebRTC] NAT, ICE, STUN, TURN 이란? ( WebRTC를 이해하기 위해 필요한 지식들)

WebRTC를 사용하기 전, 기본적으로 익혀야 할 지식들!! 🌎 NAT(Network Address Translation) '나'는 누구인지 '이름'으로 구별할 수 있듯, 각 기기에도 자신만의 이름이 있다. 그것이 바로 IP이고 이 IP는 고정IP, 유동IP 로 나뉘어서 실제 고유의 값일 수도 있고 아닐 수도 있다. 더 나아가서는 회사망/내부망(LAN)은 Private IP이기 때문에 다른 네트워크( 구글 홈페이지 접속, 일반적인 웹 사이트 접송) 등 다른 네트워크에서는 통용되지 않는다. 그렇기 때문에, 우리가 통상적인 네트워크에서 데이터를 주고 받기 위해서는 Public IP가 필요하다. NAT는 Private IP를 Public IP로 1대1 대응시켜 변환하는 장치를 말한다. 또한, IP주소를 재기록..

WebRTC 2021.01.11

[Kurento] 쿠렌토 서버 Docker로 실행시켜보기 (feat. 윈도우)

쿠렌토 서버 Docker로 실행시키기 윈도우 환경에서 로컬로 돌리게 되면 환경이 안맞는 부분도 발생할 수 있기 때문에 Docker를 사용하여 쿠렌토서버를 띄워보자 준비사항 Ubuntu 18.04 LTS Docker Docker에서 Kurento Media Server 실행시키기 우분투를 열고 명령어를 작성해준다. docker pull kurento/kurento-media-server:latest docker run -d --name kms --network host \ kurento/kurento-media-server:latest Docker 네트워크 게이트웨이가 호스트와 컨테이너 사이의 NAT 역할을 한다. 일단, 여기서는 Kurento Media Server가 동작하는지, Test할 것이기 때문에..

WebRTC 2021.01.08

[WebRTC] 쿠렌토(Kurento)는 무엇인가?

쿠렌토란? 전체 WebRTC 스택의 기능적 구현을 제공하는 미디어 서버이다. 쿠렌토를 사용할 수 있는 3가지 방법 1. 웹소켓 브라우저로부터 직접적으로 Kurento JavaScript SDK를 사용하기. ( 빠르게 테스트할 때만 추천) 2. Java EE 서버에서 Kurento Java SDK를 사용하기. ( 웹브라우저는 HTML, WebRTC 시그널링과 같은 작업을 위한 애플리케이션의 클라이언트) 3. Node.js에 Kurento JavaScript SDK을 사용하기. Media Server 를 왜 사용하는가? WebRTC는 P2P연결을 통해 웹 브라우저와 모바일 애플리케이션의 RTC기능을 제공하는 프로토콜과 APIs이다. 소프트웨어나 별도의 플러그인이 필요없고 단지 Peer 와 Peer 간의 P2..

WebRTC 2021.01.07

[ErrorLog] 구글 SMTP 메일전송시 블루스크린 뜨는 현상

구글 SMTP 메일전송시 블루스크린 뜨는 현상 상황 Auth Server를 만들면서 이메일 인증을 위해 구글메일을 전송 구현했다. 내 컴퓨터의 보안프로그램을 끄지 않고 메일을 보냈을 때, 블루스크린이 뜬다. 보안프로그램을 끄고 메일을 전송할 때는 블루스크린이 뜨지 않는다. ( 메일전송이 잘 된다. ) 1. Application.properties # Email전송 spring.mail.host=smtp.gmail.com spring.mail.port=587 spring.mail.username=/*아이디*/ spring.mail.password=/*앱비밀번호*/ spring.mail.properties.mail.debug=true spring.mail.properties.mail.smtp.auth=tru..

SERVER/Spring Boot 2021.01.06

[Spring] 스프링 프레임워크 이해하기

스프링 프레임워크란? 스프링 프레임워크는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크이다. 웹 애플리케이션을 만들기 위해 다양한 프레임워크가 존재하지만, 많이 알려지고 활용하고 있는 프레임워크이다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크로도 체택되었다. 스프링 프레임워크를 중심으로 스프링 부트, 스프링 시큐리티, 스프링 소셜, 스프링 클라우드 등 다양한 프로젝트들을 만들었다. 스프링 아키텍처 - MVC 패턴 MVC는 Model, View, Controller로 데이터와 화면을 분리시켜서 코드 재사용성을 높인다. 그림의 프론트 컨트롤러의 역할을 스프링 MVC에서 디스패처 서블릿이 대신한다. 일반적으로 사용하는 스프링 MVC 구조 1. 사용자(Client)..

SERVER/Spring Boot 2020.12.30

[Spring] Spring boot 프로젝트 살펴보기 (feat. 인증서버)

프로젝트의 주요 파일 및 구조 크게 src, test, build.gradle이 있다는 것을 확인할 수 있다. 프로젝트의 주요 파일 설명 src/main/java java 파일이 담겨져 있는 디렉토리 AuthServerApplication 애플리케이션이 동작할 수 있는 main함수가 담겨져있는 스프링의 메인 클래스 (애플리케이션 동작의 맨 처음이라고 생각하면 됨) application.properties 사용할 property를 정의하는 곳 ex) DB name, password, 속성 등 # 개인의 중요한 정보가 담겨있는 것은 따로 관리하여 gitignore에 추가해놓는 것이 좋음. build.gradle 프로젝트에서 사용하는 라이브러리들을 관리하고 빌드하는 곳 1. AuthServerApplicati..

SERVER/Spring Boot 2020.12.29

2020년 회고록

《2020년 회고록》 2020년을 시작했을 때.. 나는 2019년 휴학하며 공부나 나의 삶의 여러가지 면에서 후회를 많이 했기 때문에, 2020년은 후회가 없는 한 해가 되었으면 좋겠다고 생각했다. 그래서 2020년도에는 내가 할 수 있는 것들을 최대한 해보려고 노력을 했다. 2020년도에 나는 이런 것을 했다. 1. 셜록홈즈 방탈출 알바 느낀 게 많은 알바였던 것 같다. 알바는 돈벌려고 하는거지! 이런 생각을 했던 나였는데 같이 알바했던 사람들을 보며 보고 배운 것이 많다. 본인의 책임에 최선을 다하는 사람, 밝고 명량하며 사람을 대하는 데 능숙한 사람, 일을 즐기는 사람 등 같이 일하고 대화를 나누며 '일'이란 무엇일까? 에 대해 많이 생각할 수 있는 기회였다. 또, 일을 하며 이렇게 정든 사람들이 ..

회고록 2020.12.28