Esempio n. 1
0
        private async void Signaler_OnMessage(Signaler.Message message)
        {
            switch (message.MessageType)
            {
            case Signaler.Message.WireMessageType.Offer:
                await _nativePeer.SetRemoteDescriptionAsync("offer", message.Data);

                // If we get an offer, we immediately send an answer back
                _nativePeer.CreateAnswer();
                break;

            case Signaler.Message.WireMessageType.Answer:
                _ = _nativePeer.SetRemoteDescriptionAsync("answer", message.Data);
                break;

            case Signaler.Message.WireMessageType.Ice:
                // TODO - This is NodeDSS-specific
                // this "parts" protocol is defined above, in OnIceCandiateReadyToSend listener
                var parts = message.Data.Split(new string[] { message.IceDataSeparator }, StringSplitOptions.RemoveEmptyEntries);
                // Note the inverted arguments; candidate is last here, but first in OnIceCandiateReadyToSend
                _nativePeer.AddIceCandidate(parts[2], int.Parse(parts[1]), parts[0]);
                break;

            default:
                throw new InvalidOperationException($"Unhandled signaler message type '{message.MessageType}'");
            }
        }