handleIncomingPacket method
Implementation
handleIncomingPacket(Map<String, String> pkt) async {
var target = pkt["Target"];
if (target == "SDP") {
LogConnectionEvent(ConnectionEvent.ExchangingSignalingMessage);
var sdp = pkt["SDP"];
if (sdp == null) {
Log(LogLevel.Error, "missing sdp");
return;
}
var type = pkt["Type"];
if (type == null) {
Log(LogLevel.Error, "missing sdp type");
return;
}
webrtc.onIncomingSDP(LibWebRTC.RTCSessionDescription(
sdp, (type == "offer") ? "offer" : "answer"));
} else if (target == "ICE") {
LogConnectionEvent(ConnectionEvent.ExchangingSignalingMessage);
var sdpmid = pkt["SDPMid"];
if (sdpmid == null) {
Log(LogLevel.Error, "Missing sdp mid field");
}
var lineidx = pkt["SDPMLineIndex"];
if (lineidx == null) {
Log(LogLevel.Error, "Missing sdp line index field");
return;
}
var can = pkt["Candidate"];
if (can == null) {
Log(LogLevel.Error, "Missing sdp candidate field");
return;
}
webrtc.onIncomingICE(
LibWebRTC.RTCIceCandidate(can, sdpmid, int.parse(lineidx)));
} else if (target == "PREFLIGHT") {
//TODO
var preverro = pkt["Error"];
if (preverro != null) {
Log(LogLevel.Error, preverro);
alert(preverro);
}
var webrtcConf = pkt["WebRTCConfig"];
if (webrtcConf != null) {
var config = jsonDecode(webrtcConf);
this.webrtc.SetupConnection(config);
}
var i = Device.DeviceSelection(pkt["Devices"]!);
var result = await DeviceSelection(i);
var dat = <String, String>{};
dat["type"] = "answer";
dat["value"] = result.toString();
signaling.SignallingSend("PREFLIGHT", dat);
} else if (target == "START") {
var dat = <String, String>{};
signaling.SignallingSend("START", dat);
}
}