Files
DefinitelyTyped/webrtc/RTCPeerConnection-tests.ts
Danilo Bargen 513dc337f9 Rewrite WebRTC RTCPeerConnection definitions (#12140)
* Rewrite all RTCPeerConnection definitions

I used the specification IDL to rewrite all definitions.

* RTCPeerConnection: Add legacy interface extensions
2016-11-02 23:00:10 +09:00

92 lines
3.3 KiB
TypeScript

/// <reference path="MediaStream.d.ts" />
/// <reference path="RTCPeerConnection.d.ts" />
let defaultIceServers: RTCIceServer[] = RTCPeerConnection.defaultIceServers;
if (defaultIceServers.length > 0) {
let urls = defaultIceServers[0].urls;
}
// Create a peer connection
let ice1: RTCIceServer = {
'urls': 'stun:stun.l.google.com:19302',
'username': 'john',
'credential': '1234',
'credentialType': 'password',
};
let ice2: RTCIceServer = {'urls': ['stun:stunserver.org', 'stun:stun.example.com']};
let pc: RTCPeerConnection = new RTCPeerConnection();
let pc2: RTCPeerConnection = new RTCPeerConnection({
iceServers: [ice1, ice2],
});
RTCPeerConnection.generateCertificate("sha-256").then((cert: RTCCertificate) => {
new RTCPeerConnection({
iceServers: [ice1],
iceTransportPolicy: 'relay',
bundlePolicy: 'max-compat',
rtcpMuxPolicy: 'negotiate',
peerIdentity: 'dude',
certificates: [cert],
iceCandidatePoolSize: 5,
});
});
// Get/set the configuration
let conf: RTCConfiguration = pc2.getConfiguration();
pc.setConfiguration(conf);
// Close peer connection
pc2.close();
// Offer/answer flow
let offer: RTCSessionDescriptionInit;
let answer: RTCSessionDescriptionInit;
pc.createOffer({iceRestart: true})
.then((_offer: RTCSessionDescriptionInit) => offer = _offer);
pc.setLocalDescription(offer);
pc2.setRemoteDescription(offer);
pc2.createAnswer().then((_answer: RTCSessionDescriptionInit) => answer = _answer);
pc2.setLocalDescription(answer);
pc.setRemoteDescription(answer);
// Event handlers
pc.onnegotiationneeded = ev => console.log(ev.type);
pc.onicecandidate = ev => console.log(ev.candidate);
pc.onicecandidateerror = ev => console.log(ev.errorText);
pc.onsignalingstatechange = ev => console.log(ev.type);
pc.oniceconnectionstatechange = ev => console.log(ev.type);
pc.onicegatheringstatechange = ev => console.log(ev.type);
pc.onconnectionstatechange = ev => console.log(ev.type);
pc.ontrack = ev => console.log(ev.receiver);
pc.ondatachannel = ev => console.log(ev.channel);
// Legacy interface extensions
pc.createOffer(
(sdp: RTCSessionDescription) => console.log(sdp.sdp),
(error: DOMException) => console.log(error.message),
{iceRestart: true}
).then(() => console.log('createOffer complete'));
pc.setLocalDescription(
{type: 'offer', sdp: 'foobar'},
() => console.log('local description set'),
(error: DOMException) => console.log(error.message)
).then(() => console.log('setLocalDescription complete'));
pc.createAnswer(
(sdp: RTCSessionDescription) => console.log(sdp.sdp),
(error: DOMException) => console.log(error.message)
).then(() => console.log('createAnswer complete'));
pc.setRemoteDescription(
{type: 'answer', sdp: 'foobar'},
() => console.log('remote description set'),
(error: DOMException) => console.log(error.message)
).then(() => console.log('setRemoteDescription complete'));
pc.addIceCandidate(
{candidate: 'candidate', sdpMid: 'foo', sdpMLineIndex: 1},
() => console.log('candidate added'),
(error: DOMException) => console.log(error.message)
).then(() => console.log('addIceCandidate complete'));
pc.getStats(
null,
(report: RTCStatsReport) => console.log('got report'),
(error: DOMException) => console.log(error.message)
).then(() => console.log('getStats complete'));