private bool HTTPGetAnswers() { HttpWebRequest request = (HttpWebRequest)WebRequest.Create($"{m_url}/signaling/answer?fromtime={m_lastTimeGetAnswerRequest}"); request.Method = "GET"; request.ContentType = "application/json"; request.Headers.Add("Session-Id", m_sessionId); request.KeepAlive = false; HttpWebResponse response = HTTPGetResponse(request); AnswerResDataList list = HTTPParseJsonResponse <AnswerResDataList>(response); if (list == null) { return(false); } m_lastTimeGetAnswerRequest = DateTimeExtension.ParseHttpDate(response.Headers[HttpResponseHeader.Date]) .ToJsMilliseconds(); foreach (var answer in list.answers) { m_mainThreadContext.Post(d => OnAnswer?.Invoke(this, answer), null); } return(true); }
private void ProcessMessage(AntMediaSignalingMessage msg) { switch (msg.command) { case "start": OnStart.Invoke(msg.streamId); break; case "takeConfiguration": if (msg.type == "offer") { OnOffer.Invoke(msg); } else if (msg.type == "answer") { OnAnswer.Invoke(msg); } break; case "takeCandidate": OnIceCandidate.Invoke(msg); break; case "error": OnSignalingError.Invoke(msg.definition); break; } }
/* * It's button func on AnswerButton */ public void OnAnswerClicked(int choice) { audioM.Click(); var isLast = currentQuestionNum == PoolSize - 1; var isCorrect = currentQuestion.answers[choice] == pool.answers[currentQuestionNum]; p.AddAnsweredQuestion(currentQuestion.id, isCorrect); if (isCorrect && isLast) { PlayerWin(); } else if (!isCorrect && lives == 0) { PlayerLose(); } OnAnswer?.Invoke(this, new AnswerArgs { correct = isCorrect, choice = choice, qNum = currentQuestionNum, correctChoice = GetCorrectChoice() }); }
public void Answer(XmlReader reader) { State = RequestState.Answered; if (reader.GetAttribute("type") != "error") { OnAnswer?.Invoke(reader); } else { OnError?.Invoke(reader); } }
/// <summary> /// REceive message from server /// </summary> /// <returns>Return message - string</returns> public string Receive() { OnAnswer += clientHandler.Transliteration; var tcpEndPoint = new IPEndPoint(IPAddress.Parse(ip), port); var tcpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); var taken = new byte[256]; var size = 0; var answer = new StringBuilder(); do { size = tcpSocket.Receive(taken); answer.Append(Encoding.UTF8.GetString(taken, 0, size)); }while (tcpSocket.Available > 0); OnAnswer?.Invoke(answer.ToString()); tcpSocket.Shutdown(SocketShutdown.Both); tcpSocket.Close(); return(answer.ToString()); }
private void OnAnswerpress(char press) { if (AnswerButtonsEnabled) { AnswerButtonsEnabled = false; switch (press) { case 'A': buttonA.BackgroundImage = Properties.Resources.TryA; buttonA.Refresh(); AnswerIndex = 1; break; case 'B': buttonB.BackgroundImage = Properties.Resources.TryB; buttonB.Refresh(); AnswerIndex = 2; break; case 'C': buttonC.BackgroundImage = Properties.Resources.TryC; buttonC.Refresh(); AnswerIndex = 3; break; case 'D': buttonD.BackgroundImage = Properties.Resources.TryD; buttonD.Refresh(); AnswerIndex = 4; break; } if (File.Exists(@"sound\gong.wav")) { new System.Media.SoundPlayer(@"sound\gong.wav").Play(); } Thread.Sleep(3000); OnAnswer?.Invoke(this, EventArgs.Empty); } }
public IEnumerator AskQuestion(QuestionSpec questionSpec) { _speechRecognizer.Setup(questionSpec.CorrectAnswers); yield return(PlayVoice(questionSpec.QuestionElements[QuestionSpec.DefaultKeys.Intro])); yield return(PlayVoice(questionSpec.QuestionElements[QuestionSpec.DefaultKeys.BaseQuestion])); yield return(_speechRecognizer.Recognize(questionSpec.QuestionElements[QuestionSpec.DefaultKeys.BaseQuestion].Text, _questionsSpec.GeneralQuestionsSpec.AnswerListeningDuration)); if (_speechRecognizer.IsCorrectAnswer()) { OnAnswer?.Invoke(_statisticsInfo .AddTimeBeforeAnswer(_speechRecognizer.TimeBeforeAnswer) .AddCorrectAnswerAttempt(1)); yield return(OnCorrectAnswer(questionSpec)); yield break; } yield return(PlayVoice(questionSpec.QuestionElements[QuestionSpec.DefaultKeys.SupportQuestion])); yield return(_speechRecognizer.Recognize(questionSpec.QuestionElements[QuestionSpec.DefaultKeys.BaseQuestion].Text, _questionsSpec.GeneralQuestionsSpec.AnswerListeningDuration)); if (_speechRecognizer.IsCorrectAnswer()) { OnAnswer?.Invoke(_statisticsInfo .AddTimeBeforeAnswer(_speechRecognizer.TimeBeforeAnswer) .AddCorrectAnswerAttempt(2)); yield return(OnCorrectAnswer(questionSpec)); yield break; } OnAnswer?.Invoke(_statisticsInfo); yield return(PlayVoice(questionSpec.QuestionElements[QuestionSpec.DefaultKeys.RepeatOnIncorrect])); }
private void WSProcessMessage(object sender, MessageEventArgs e) { var content = Encoding.UTF8.GetString(e.RawData); Debug.Log($"Signaling: Receiving message: {content}"); try { var routedMessage = JsonUtility.FromJson <RoutedMessage <SignalingMessage> >(content); SignalingMessage msg; if (!string.IsNullOrEmpty(routedMessage.type)) { msg = routedMessage.data; } else { msg = JsonUtility.FromJson <SignalingMessage>(content); } if (!string.IsNullOrEmpty(routedMessage.type)) { if (routedMessage.type == "connect") { string connectionId = JsonUtility.FromJson <SignalingMessage>(content).connectionId; OnCreateConnection?.Invoke(this, connectionId); } else if (routedMessage.type == "offer") { if (!string.IsNullOrEmpty(routedMessage.from)) { DescData offer = new DescData(); offer.connectionId = routedMessage.from; offer.sdp = msg.sdp; OnOffer?.Invoke(this, offer); } else { Debug.LogError("Signaling: Received message from unknown peer"); } } else if (routedMessage.type == "answer") { if (!string.IsNullOrEmpty(routedMessage.from)) { DescData answer = new DescData { connectionId = routedMessage.from, sdp = msg.sdp }; OnAnswer?.Invoke(this, answer); } else { Debug.LogError("Signaling: Received message from unknown peer"); } } else if (routedMessage.type == "candidate") { if (!string.IsNullOrEmpty(routedMessage.from)) { CandidateData candidate = new CandidateData { connectionId = routedMessage.@from, candidate = msg.candidate, sdpMLineIndex = msg.sdpMLineIndex, sdpMid = msg.sdpMid }; OnIceCandidate?.Invoke(this, candidate); } else { Debug.LogError("Signaling: Received message from unknown peer"); } } } } catch (Exception ex) { Debug.LogError("Signaling: Failed to parse message: " + ex); } }
//private void ProcessMessage(byte[] data) private void ProcessMessage(string content) { //var content = Encoding.UTF8.GetString(data); Debug.Log($"Signaling: Receiving message: {content}"); try { var routedMessage = JsonUtility.FromJson <RoutedMessage <SignalingMessage> >(content); SignalingMessage msg; if (!string.IsNullOrEmpty(routedMessage.type)) { msg = routedMessage.data; } else { msg = JsonUtility.FromJson <SignalingMessage>(content); } if (!string.IsNullOrEmpty(routedMessage.type)) { if (routedMessage.type == "connect") { msg = JsonUtility.FromJson <SignalingMessage>(content); m_mainThreadContext.Post(d => OnCreateConnection?.Invoke(this, msg.connectionId, msg.peerExists), null); } else if (routedMessage.type == "disconnect") { msg = JsonUtility.FromJson <SignalingMessage>(content); m_mainThreadContext.Post(d => OnDestroyConnection?.Invoke(this, msg.connectionId), null); } else if (routedMessage.type == "offer") { DescData offer = new DescData(); offer.connectionId = routedMessage.from; offer.sdp = msg.sdp; m_mainThreadContext.Post(d => OnOffer?.Invoke(this, offer), null); } else if (routedMessage.type == "answer") { DescData answer = new DescData { connectionId = routedMessage.from, sdp = msg.sdp }; m_mainThreadContext.Post(d => OnAnswer?.Invoke(this, answer), null); } else if (routedMessage.type == "candidate") { CandidateData candidate = new CandidateData { connectionId = routedMessage.@from, candidate = msg.candidate, sdpMLineIndex = msg.sdpMLineIndex, sdpMid = msg.sdpMid }; m_mainThreadContext.Post(d => OnIceCandidate?.Invoke(this, candidate), null); } else if (routedMessage.type == "error") { msg = JsonUtility.FromJson <SignalingMessage>(content); Debug.LogError(msg.message); } } } catch (Exception ex) { Debug.LogError("Signaling: Failed to parse message: " + ex); } }
private void ThreadEventDispatch() { while (false == EventStop.Wait(1)) { string json = ""; bool pop_ok = EventJsonQueue.TryDequeue(out json); if (!pop_ok || json == null || json == "") { continue; } OnEventRawString?.Invoke(this, json); JObject jdata = null; EVENT_TYPE type = ParseEventType(json, out jdata); //因為必須在conference裡面中轉各個customized header,不得已只好自己維護live channel的資料... //收到CHANNEL_CREATE事件時就收錄channel資訊 //留在Conference Create時撈出來看 variable_sip_h_X-* 變數.... switch (type) { case EVENT_TYPE.CALL_TO_SWITCH: OnCall?.Invoke(this, new CCallEvent(jdata)); break; case EVENT_TYPE.SWITCH_CALL_USER: OnCall?.Invoke(this, new CCallEvent(jdata)); break; case EVENT_TYPE.ANSWER: OnAnswer?.Invoke(this, new CAnswerEvent(jdata)); break; case EVENT_TYPE.HANGUP: OnHangUp?.Invoke(this, new CHangUpEvent(jdata)); break; case EVENT_TYPE.DESTROY_CALL: OnCallDestroy?.Invoke(this, new CCallEvent(jdata)); break; case EVENT_TYPE.CONFERENCE_CREATE: OnRoomCreate?.Invoke(this, new CConferenceCreateEvent(jdata)); break; case EVENT_TYPE.CONFERENCE_DELETE: OnRoomDelete?.Invoke(this, new CConferenceDeleteEvent(jdata)); break; case EVENT_TYPE.JOIN_CONFERENCE: OnJoinRoom?.Invoke(this, new CJoinConferenceEvent(jdata)); break; case EVENT_TYPE.LEAVE_CONFERENCE: OnLeaveRoom?.Invoke(this, new CLeaveConferenceEvent(jdata)); break; case EVENT_TYPE.REGISTER: OnSipRegister?.Invoke(this, new CSipRegister(jdata)); break; default: Log.Warn($"Unsupported event type {type.ToString()}, skip it..."); break; } } //Queue沒有Clear(),只能用這種蠢方法清除 while (EventJsonQueue.Count > 0) { string msg = ""; EventJsonQueue.TryDequeue(out msg); } }