WebPeerConnection constructor
WebPeerConnection(
- RTCPeerConnection rtcConnection
Implementation
WebPeerConnection(this.rtcConnection) {
rtcConnection.onConnectionState = (state) {
if (!_connectionStateController.isClosed) {
_connectionStateController.add(_mapConnectionState(state));
}
};
rtcConnection.onIceCandidate = (candidate) {
if (!_iceCandidateController.isClosed) {
_iceCandidateController.add(
IceCandidate(
candidate: candidate.candidate ?? '',
sdpMid: candidate.sdpMid,
sdpMLineIndex: candidate.sdpMLineIndex,
),
);
}
};
rtcConnection.onDataChannel = (dc) {
if (!_dataChannelController.isClosed) {
_dataChannelController.add(WebDataChannel(dc));
}
};
rtcConnection.onTrack = (rtc.RTCTrackEvent track) async {
print(
'onTrack (web): ${track.track.kind} with ${track.streams.length} streams',
);
if (_trackController.isClosed) return;
if (track.streams.isNotEmpty) {
_trackController.add(WebMediaStream(track.streams[0]));
} else {
final stream = await rtc.createLocalMediaStream(
'remote_stream_${track.track.id}',
);
await stream.addTrack(track.track);
if (!_trackController.isClosed) {
_trackController.add(WebMediaStream(stream));
}
}
};
}