werift 0.14.4-debug0 → 0.15.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/common/src/binary.d.ts +0 -1
- package/lib/common/src/binary.js +1 -2
- package/lib/common/src/binary.js.map +1 -1
- package/lib/dtls/src/context/cipher.js +5 -2
- package/lib/dtls/src/context/cipher.js.map +1 -1
- package/lib/dtls/src/handshake/extensions/useSrtp.js +5 -2
- package/lib/dtls/src/handshake/extensions/useSrtp.js.map +1 -1
- package/lib/ice/src/candidate.js +5 -2
- package/lib/ice/src/candidate.js.map +1 -1
- package/lib/ice/src/ice.d.ts +2 -2
- package/lib/ice/src/ice.js +6 -5
- package/lib/ice/src/ice.js.map +1 -1
- package/lib/ice/src/stun/attributes.js +5 -2
- package/lib/ice/src/stun/attributes.js.map +1 -1
- package/lib/rtp/src/rtcp/rr.js +5 -2
- package/lib/rtp/src/rtcp/rr.js.map +1 -1
- package/lib/rtp/src/rtcp/rtpfb/nack.js +6 -3
- package/lib/rtp/src/rtcp/rtpfb/nack.js.map +1 -1
- package/lib/rtp/src/rtcp/rtpfb/twcc.js +6 -6
- package/lib/rtp/src/rtcp/rtpfb/twcc.js.map +1 -1
- package/lib/rtp/src/rtcp/sr.js +5 -2
- package/lib/rtp/src/rtcp/sr.js.map +1 -1
- package/lib/rtp/src/srtp/cipher/ctr.js +5 -2
- package/lib/rtp/src/srtp/cipher/ctr.js.map +1 -1
- package/lib/rtp/src/srtp/cipher/gcm.js +6 -3
- package/lib/rtp/src/srtp/cipher/gcm.js.map +1 -1
- package/lib/sctp/src/param.js +5 -2
- package/lib/sctp/src/param.js.map +1 -1
- package/lib/sctp/src/sctp.js +5 -5
- package/lib/sctp/src/sctp.js.map +1 -1
- package/lib/webrtc/src/media/receiver/nack.js +2 -2
- package/lib/webrtc/src/media/receiver/nack.js.map +1 -1
- package/lib/webrtc/src/media/rtpReceiver.d.ts +3 -2
- package/lib/webrtc/src/media/rtpReceiver.js +4 -2
- package/lib/webrtc/src/media/rtpReceiver.js.map +1 -1
- package/lib/webrtc/src/media/rtpSender.d.ts +4 -2
- package/lib/webrtc/src/media/rtpSender.js +15 -7
- package/lib/webrtc/src/media/rtpSender.js.map +1 -1
- package/lib/webrtc/src/media/rtpTransceiver.d.ts +7 -6
- package/lib/webrtc/src/media/rtpTransceiver.js +8 -3
- package/lib/webrtc/src/media/rtpTransceiver.js.map +1 -1
- package/lib/webrtc/src/nonstandard/recorder/writer/webm.js +1 -1
- package/lib/webrtc/src/nonstandard/recorder/writer/webm.js.map +1 -1
- package/lib/webrtc/src/peerConnection.d.ts +10 -10
- package/lib/webrtc/src/peerConnection.js +324 -188
- package/lib/webrtc/src/peerConnection.js.map +1 -1
- package/lib/webrtc/src/sdp.js +5 -2
- package/lib/webrtc/src/sdp.js.map +1 -1
- package/lib/webrtc/src/transport/dtls.d.ts +3 -2
- package/lib/webrtc/src/transport/dtls.js +3 -0
- package/lib/webrtc/src/transport/dtls.js.map +1 -1
- package/lib/webrtc/src/transport/sctp.d.ts +5 -3
- package/lib/webrtc/src/transport/sctp.js +46 -34
- package/lib/webrtc/src/transport/sctp.js.map +1 -1
- package/package.json +2 -2
- package/src/media/receiver/nack.ts +1 -1
- package/src/media/rtpReceiver.ts +6 -5
- package/src/media/rtpSender.ts +18 -9
- package/src/media/rtpTransceiver.ts +13 -6
- package/src/nonstandard/recorder/writer/webm.ts +1 -1
- package/src/peerConnection.ts +386 -223
- package/src/sdp.ts +1 -1
- package/src/transport/dtls.ts +4 -1
- package/src/transport/sctp.ts +53 -33
package/src/sdp.ts
CHANGED
package/src/transport/dtls.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Certificate, PrivateKey } from "@fidm/x509";
|
|
|
2
2
|
import debug from "debug";
|
|
3
3
|
import Event from "rx.mini";
|
|
4
4
|
import { setTimeout } from "timers/promises";
|
|
5
|
+
import { v4 } from "uuid";
|
|
5
6
|
|
|
6
7
|
import {
|
|
7
8
|
DtlsClient,
|
|
@@ -34,6 +35,7 @@ import { RTCIceTransport } from "./ice";
|
|
|
34
35
|
const log = debug("werift:packages/webrtc/src/transport/dtls.ts");
|
|
35
36
|
|
|
36
37
|
export class RTCDtlsTransport {
|
|
38
|
+
id = v4();
|
|
37
39
|
state: DtlsState = "new";
|
|
38
40
|
role: DtlsRole = "auto";
|
|
39
41
|
srtpStarted = false;
|
|
@@ -46,7 +48,7 @@ export class RTCDtlsTransport {
|
|
|
46
48
|
|
|
47
49
|
readonly onStateChange = new Event<[DtlsState]>();
|
|
48
50
|
|
|
49
|
-
|
|
51
|
+
localCertificate?: RTCCertificate = this.certificates[0];
|
|
50
52
|
private remoteParameters?: RTCDtlsParameters;
|
|
51
53
|
|
|
52
54
|
constructor(
|
|
@@ -79,6 +81,7 @@ export class RTCDtlsTransport {
|
|
|
79
81
|
signatureHash
|
|
80
82
|
);
|
|
81
83
|
}
|
|
84
|
+
return this.localCertificate;
|
|
82
85
|
}
|
|
83
86
|
|
|
84
87
|
setRemoteParams(remoteParameters: RTCDtlsParameters) {
|
package/src/transport/sctp.ts
CHANGED
|
@@ -24,51 +24,71 @@ import { RTCDtlsTransport } from "./dtls";
|
|
|
24
24
|
const log = debug("werift/webrtc/transport/sctp");
|
|
25
25
|
|
|
26
26
|
export class RTCSctpTransport {
|
|
27
|
+
dtlsTransport!: RTCDtlsTransport;
|
|
28
|
+
sctp!: SCTP;
|
|
29
|
+
|
|
27
30
|
readonly onDataChannel = new Event<[RTCDataChannel]>();
|
|
28
31
|
readonly uuid = uuid.v4();
|
|
29
|
-
|
|
32
|
+
|
|
30
33
|
mid?: string;
|
|
31
34
|
bundled = false;
|
|
32
35
|
dataChannels: { [key: number]: RTCDataChannel } = {};
|
|
33
36
|
|
|
34
37
|
private dataChannelQueue: [RTCDataChannel, number, Buffer][] = [];
|
|
35
38
|
private dataChannelId?: number;
|
|
39
|
+
private eventDisposer: (() => void)[] = [];
|
|
40
|
+
|
|
41
|
+
constructor(public port = 5000) {}
|
|
42
|
+
|
|
43
|
+
setDtlsTransport(dtlsTransport: RTCDtlsTransport) {
|
|
44
|
+
if (this.dtlsTransport && this.dtlsTransport.id === dtlsTransport.id) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
this.eventDisposer.forEach((dispose) => dispose());
|
|
49
|
+
|
|
50
|
+
this.dtlsTransport = dtlsTransport;
|
|
51
|
+
this.sctp = new SCTP(new BridgeDtls(this.dtlsTransport), this.port);
|
|
52
|
+
|
|
53
|
+
this.eventDisposer = [
|
|
54
|
+
...[
|
|
55
|
+
this.sctp.onReceive.subscribe(this.datachannelReceive),
|
|
56
|
+
this.sctp.onReconfigStreams.subscribe((ids: number[]) => {
|
|
57
|
+
ids.forEach((id) => {
|
|
58
|
+
const dc = this.dataChannels[id];
|
|
59
|
+
if (!dc) return;
|
|
60
|
+
// todo fix
|
|
61
|
+
dc.setReadyState("closing");
|
|
62
|
+
dc.setReadyState("closed");
|
|
63
|
+
delete this.dataChannels[id];
|
|
64
|
+
});
|
|
65
|
+
}),
|
|
66
|
+
this.sctp.stateChanged.connected.subscribe(() => {
|
|
67
|
+
Object.values(this.dataChannels).forEach((channel) => {
|
|
68
|
+
if (channel.negotiated && channel.readyState !== "open") {
|
|
69
|
+
channel.setReadyState("open");
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
this.dataChannelFlush();
|
|
73
|
+
}),
|
|
74
|
+
this.sctp.stateChanged.closed.subscribe(() => {
|
|
75
|
+
Object.values(this.dataChannels).forEach((dc) => {
|
|
76
|
+
dc.setReadyState("closed");
|
|
77
|
+
});
|
|
78
|
+
this.dataChannels = {};
|
|
79
|
+
}),
|
|
80
|
+
this.dtlsTransport.onStateChange.subscribe((state) => {
|
|
81
|
+
if (state === "closed") {
|
|
82
|
+
this.sctp.setState(SCTP_STATE.CLOSED);
|
|
83
|
+
}
|
|
84
|
+
}),
|
|
85
|
+
].map((e) => e.unSubscribe),
|
|
86
|
+
() => (this.sctp.onSackReceived = async () => {}),
|
|
87
|
+
];
|
|
36
88
|
|
|
37
|
-
constructor(public dtlsTransport: RTCDtlsTransport, public port = 5000) {
|
|
38
|
-
this.sctp.onReceive.subscribe(this.datachannelReceive);
|
|
39
|
-
this.sctp.onReconfigStreams.subscribe((ids: number[]) => {
|
|
40
|
-
ids.forEach((id) => {
|
|
41
|
-
const dc = this.dataChannels[id];
|
|
42
|
-
if (!dc) return;
|
|
43
|
-
// todo fix
|
|
44
|
-
dc.setReadyState("closing");
|
|
45
|
-
dc.setReadyState("closed");
|
|
46
|
-
delete this.dataChannels[id];
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
this.sctp.stateChanged.connected.subscribe(() => {
|
|
50
|
-
Object.values(this.dataChannels).forEach((channel) => {
|
|
51
|
-
if (channel.negotiated && channel.readyState !== "open") {
|
|
52
|
-
channel.setReadyState("open");
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
this.dataChannelFlush();
|
|
56
|
-
});
|
|
57
|
-
this.sctp.stateChanged.closed.subscribe(() => {
|
|
58
|
-
Object.values(this.dataChannels).forEach((dc) => {
|
|
59
|
-
dc.setReadyState("closed");
|
|
60
|
-
});
|
|
61
|
-
this.dataChannels = {};
|
|
62
|
-
});
|
|
63
89
|
this.sctp.onSackReceived = async () => {
|
|
64
90
|
await this.dataChannelFlush();
|
|
65
91
|
};
|
|
66
|
-
|
|
67
|
-
this.dtlsTransport.onStateChange.subscribe((state) => {
|
|
68
|
-
if (state === "closed") {
|
|
69
|
-
this.sctp.setState(SCTP_STATE.CLOSED);
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
92
|
}
|
|
73
93
|
|
|
74
94
|
private get isServer() {
|