/// <summary> /// Initial Client Socket /// </summary> protected void SocketInitial() { _SocketClient.OnMessage += (s, e) => { string data = e.Data; SocketMessage message = SocketMessage.MessageFac(data); switch (message.Command) { case SocketMessage.OfferSpd: using (var go = new ManualResetEvent(false)) { var t = Task.Factory.StartNew(() => { var ok = _WebRtc.InitializePeerConnection(); if (ok) { go.Set(); while (_WebRtc.ProcessMessages(1000)) { } _WebRtc.ProcessMessages(1000); } }, _Cancel.Token, TaskCreationOptions.LongRunning, TaskScheduler.Default); if (go.WaitOne(9999)) { _WebRtc.OnOfferRequest(message.SDP); } } break; case SocketMessage.OnSuccessAnswer: SuccessAnswerMsg answerMsg = message as SuccessAnswerMsg; _WebRtc.OnOfferReply(answerMsg.Type, answerMsg.SDP); break; case SocketMessage.OnIceCandidate: IceCandidateMsg iceMsg = message as IceCandidateMsg; _WebRtc.AddIceCandidate(iceMsg.SdpMid, iceMsg.SdpMlineIndex, iceMsg.SDP); break; } }; _SocketClient.OnClose += (s, e) => _Cancel.Cancel(); _SocketClient.OnError += (s, e) => _Cancel.Cancel(); }