22. DataChannel
• SCTP or RTP
• Unreliable or reliable
• WebSocket 과 같은 API
• 대용량 파일 전송 시 Worker, File API 사용
• 타 플랫폼과의 파일 교환 시엔 base64 또는
ByteArray 를 사용
23. Datachannel 생성
var pc = new PeerConnection({
iceServers: []
}, {
optional: [
{ RtpDataChannels: false }
]
});
var data = pc.createDataChannel("webrtc_test", { });
26. Worker
onmessage = function(e){
var data = e.data, reader = null;
if(!FileReaderSync) {
reader = new FileReader();
reader.onload = function(e){
postMessage(e.target.result);
};
reader.readAsArrayBuffer(data);
} else{
reader = new FileReaderSync();
postMessage(reader.readAsArrayBuffer(data));
}
};
27. Worker
var javascript = function(e){
var data = e.data, reader = null;
if(!FileReaderSync) {
//
} else{
//
}
};
var blob = new Blob([ "onmessage = " + javascript.toString() ], {
type: "application/javascript"
});
blob = URL.createObjectURL(blob);
var worker = new Worker(blob);
28. Typed Array
• Binary Data handling
• Buffer and View
• Buffer 는 길이가 정해진 이진 데이터 버퍼
• View 는 Buffer 로 부터 값을 읽거나 쓸 수 있도
록 로우 레벨 인터페이스 제공
29. var buf = new ArrayBuffer(text.length * 2),
view = new Uint8Array(buf), i = 0, char = null,
len = text.length, j = 0;
for(;i < len; i++) {
char = text.charCodeAt(i);
view[j] = char >>> 8;
view[j + 1] = char & 0xFF;
j = j + 2;
}
var arr = this.packetSplit(buf, 66488),
hbuf = new ArrayBuffer(36),
dv = new DataView(hbuf);
dv.setFloat64(0, id);
dv.setInt32(8, 0);
dv.setFloat64(12, buf.byteLength);
dv.setInt32(20, 0);
dv.setInt32(24, arr.length);
dv.setInt32(28, 0);
dv.setInt32(32, arr[0].byteLength);
send(dv.buffer, arr, 0);
30. 대용량 파일 보내기
1. Worker와 File API 를 통해 파일을 ArrayBuffer변환
2. ArrayBuffer 를 적절한 사이즈로 잘라서 배열로 보관
3. Typed Array 를 활용하여 파일 개요를 담은 Header
를 생성
4. Header 와 잘라진 파일 배열을 결합하여 전송
5. 배열을 끝날 때까지 반복하여 전송
36. PlayRTC
• WebRTC 서비스 플랫폼
• WebRTC 개발을 잘 모르는 비전문가도 쉽게 새로운
비즈니스를 만들어갈 수 있도록 플랫폼과 API를 제공
• Web browser 외에 다양한 스마트 디바이스를 지원
(Android, IOS, IE)
• http://playrtc.com
• https://github.com/playrtc
39. WebRTC Internals
• Peer CandidateType
• bwe
• bandwidth estimation
• Packet Lost, RTT, Jitter 등으로 네트웍 상태를 파악
• Video Frame Width, Frame Height, Frame Rate 등 확
인
40. 테스트
• selenium
• web app 를 위한 테
스팅 프레임워크
• 자동화 테스트를 위한
기능을 제공
• nightwatch.js
• selenium 을 node.js 에서 사
용할 수 있도록 제공
41. 설치
• JDK 6 이상 설치
• node.js 설치
• nightwatch 설치
• npm install nightwatch
• selenium 설치
• selenium-server-standalone-x.x.x.jar 를 다운받아서
원하는 폴더에 저장
• 브라우저 드라이버 설치
• Driver 저장소에서 원하는 브라우저 드라이버를 다운받
아 원하는 폴더에 저장
42. 테스트 코드 실행
• node ./bin/nightwatch.js --env chrome,chrome
-g single-page