Example #1
0
 private void OnDataChannelMessage(RTCDataChannel dc, DataChannelPayloadProtocols protocol, byte[] data)
 {
     if (protocol == DataChannelPayloadProtocols.WebRTC_Binary)
     {
         if (data != null)
         {
             _incomingQueue.BlockEnqueue(data);
         }
     }
     else
     {
         Logger.LogWarning("None binary message received on the data channel.");
     }
 }
Example #2
0
        /// <summary>
        /// Event handler for an SCTP data chunk being received for this data channel.
        /// </summary>
        internal void GotData(ushort streamID, ushort streamSeqNum, uint ppID, byte[] data)
        {
            //logger.LogTrace($"WebRTC data channel GotData stream ID {streamID}, stream seqnum {streamSeqNum}, ppid {ppID}, label {label}.");

            // If the ppID is not recognised default to binary.
            DataChannelPayloadProtocols payloadType = DataChannelPayloadProtocols.WebRTC_Binary;

            if (Enum.IsDefined(typeof(DataChannelPayloadProtocols), ppID))
            {
                payloadType = (DataChannelPayloadProtocols)ppID;
            }

            onmessage?.Invoke(this, (DataChannelPayloadProtocols)ppID, data);
        }
Example #3
0
        private static void OnData(RTCDataChannel dc, DataChannelPayloadProtocols proto, byte[] data)
        {
            if (proto == DataChannelPayloadProtocols.WebRTC_String)
            {
                Console.WriteLine($"{dc.label}: return recv stream id {dc.id}, send# {Encoding.UTF8.GetString(data)}");
                int pairID = int.Parse(Regex.Match(dc.label, @".*-(?<id>\d+)-.*").Result("${id}"));
                connectionPairs.Single(x => x.ID == pairID).StreamSendConfirmed[dc.id.Value].Set();
            }
            else if (proto == DataChannelPayloadProtocols.WebRTC_Binary)
            {
                var packet = BytesToStructure <Message>(data);
                var sha256 = Crypto.GetSHA256Hash(packet.Data);
                Console.WriteLine($"{dc.label}: recv stream id {dc.id}, send# {packet.Num}.");
                //Console.WriteLine($"{dc.label}: recv {packet.Num}, sha256 {sha256}.");

                if (sha256 != packet.SHA256)
                {
                    throw new ApplicationException($"Data channel message sha256 hash {sha256} did not match expected hash {packet.SHA256}.");
                }

                dc.send(packet.Num.ToString());
            }
        }