async void IpDiscover(object sender, PacketReceivedEventArgs args) { var packet = (byte[])args.Message; string ip = ""; int port = 0; try { ip = Encoding.UTF8.GetString(packet, 4, 70 - 6).TrimEnd('\0'); port = (packet[68] << 8) | packet[69]; } catch /*(Exception exception)*/ { //App.NavigateToBugReport(exception); } var info = new UdpProtocolInfo() { Address = ip, Port = port, Codecs = new List <Codec>() { new Codec() { Name = "opus", payloadType = 120, Priority = 1000, Type = "audio", rtxPayloadType = 120 }, new Codec() { Name = "VP8", payloadType = 101, Priority = 1000, Type = "video", rtxPayloadType = 102 } }.ToArray(), Mode = "xsalsa20_poly1305" //"_suffix" }; var payload = new SelectProtocol() { Protocol = "udp", Data = info }; SocketFrame package = new SocketFrame() { Operation = (int)OperationCode.SelectProtocol, Payload = payload, Type = EventNames.SELECT_PROTOCOL }; _udpSocket.MessageReceived -= IpDiscover; _udpSocket.MessageReceived += processUdpPacket; await _webMessageSocket.SendJsonObjectAsync(package); }
protected override void PacketRecieved(string packetstr) { VoicePacket packet = new VoicePacket(packetstr); VoicePacketType type = packet.GetPacketType(); if (type == VoicePacketType.Hello) { Logger.Info("Voice server says hello!"); SendIdentityPacket(); } else if (type == VoicePacketType.Ready) { readyData = packet.GetData<VoiceChannelReady>(); try { stream = new AudioStream(readyData); stream.Connect(); BasicPacket spacket = new SelectProtocol(readyData.ip, readyData.port); Send(spacket); } catch (Exception e) { Logger.Error($"AudioStream connection error: {e.Message}"); Disconnect(); } } else if (type == VoicePacketType.ClientDisconnect) { Disconnect(); } else if (type == VoicePacketType.CodecInformation) { CodecInformation codecinfo = packet.GetData<CodecInformation>(); Logger.Info($"Audio codec is {codecinfo.audio_codec}"); stream.SetCodec(codecinfo.audio_codec); } else { Logger.Debug($"Unchecked type: {type}"); } }
private async void WebrtcManagerOnIpAndPortObtained(object sender, Tuple <string, ushort> e) { var info = new UdpProtocolInfo() { Address = e.Item1, Port = e.Item2, Codecs = new List <Codec>() { new Codec() { Name = "opus", payloadType = 120, Priority = 1000, Type = "audio", rtxPayloadType = 120, }, new Codec() { Name = "VP8", payloadType = 101, Priority = 1000, Type = "video", rtxPayloadType = 102, }, }.ToArray(), Mode = "xsalsa20_poly1305", //"_suffix" }; var payload = new SelectProtocol() { Protocol = "udp", Data = info, }; SocketFrame package = new SocketFrame() { Operation = (int)OperationCode.SelectProtocol, Payload = payload, Type = EventNames.SELECT_PROTOCOL, }; await _webMessageSocket.SendJsonObjectAsync(package); }