
SSL 설정
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
Client
getLocalStream
- 미디어 입력을 사용할 수 있는 권한을 요청 후
streamSuccess
실행
streamSuccess
- localVideo에 stream을 설정
joinRoom
실행
joinRoom
- 소켓에 ‘joinRoom’ 보내고 Router로부터 rtpCapabilities를 받아 설정
createDevice
실행
createDevice
- device의 routerRtpCapabilities를 설정하고
createSendTransport
실행
createSendTransport
- 소켓에 ‘createWebRtcTransport’를 보내고 받은 params로 producerTransport를 생성하여 'connect', 'produce' listening
- connect : 소켓에 'transport-connect' emit
- produce : 소켓에 'transport-produce' emit, producer가 있으면
getProducers
실행
connectSendTransport
실행
connectSendTransport
- producerTransport.produce(params)로 producer 생성하여, trackended와 transportclose listening
getProducers
- socket에 ‘getProducers’를 보내 producer id 목록을 받아와 해당 id들에 대한
signalNewConsumerTransport
를 실행
signalNewConsumerTransport
- 소켓에 ‘createWebRtcTransport’를 보내고 받은 params로 consumerTransport 생성, consumerTransport에서 ‘connect’ listening
- connect : 소켓에 ‘transport-recv-connect’ emit
- parameter로 받은 producer id로
connectRecvTransport
실행
connectRecvTransport
- rtpCapabilities, remoteProducerId, params.id로 소켓에 ‘consume’을 보내고 받은 params로 consumer를 생성하여 consumerTransports에 추가, consumer에서 track을 가져와 stream을 만들어 해당 유저에 대한 video에 설정, socket에 'consumer-resume' emit
Server
createWorker
removeItems
- ‘disconnect’가 발생하면 실행
- cosumers, producers, transports에서 해당하는 socket.id 삭제
createRoom
- ‘joinRoom’이 발생하면 실행
- room이 있으면 peers에 socketId 추가
- room이 없으면 worker.createrRouter로 라우터 생성
addTransport
, addProducer
, addConsumer
- 각각 ‘createWebRtcTransport’, transport-connect’, ‘consume’ 발생 시 실행
- 각각 transports, producers, consumers에 socket 정보 추가
- 각각 peers[socket.id]의 transports, producers, consumers에 추가
informConsumers
- ‘transport-produce’가 발생하면 실행
- 새로운 유저가 들어왔을 때, 다른 유저들에게 ‘new-producer’ 알림
getTransport
- ‘transport-connect’가 발생하면 실행
- parameter로 보내준 socketId에 해당하는 transport를 반환