/// <summary> /// 통신 완료후 데이터를 분석하여 처리합니다. /// </summary> /// <param name="req">통신이 완료된 리퀘스트 객체를 받습니다.</param> private void ReceiveHttps(Request req) { ResponseData data = null; bool isSuccess = false; int errorCode = (int)ErrorCode.Error; try { Debug.Log("<color=green>@@@ Transmitter [Receive] uri : " + req.uri + "</color> response : " + req.response.Text); // 통신 완료후 에러가 없다면 리퀘스트 객체의 json을 통해 ResponseData 를 얻어옵니다. // 이 데이터는 protocolCallback 를 위한 데이터입니다. if (req.exception == null) { data = JsonToResponseData(req.response.Text); } // data 에 code를 체크해 통신의 성공여부를 확인합니다. // 이 데이터는 successCallback 를 위한 데이터입니다. if (data != null) { isSuccess = data.errorCode.Equals((int)ErrorCode.Success); errorCode = data.errorCode; } } catch (Exception e) { Console.WriteLine(e); throw; } finally { if (isSuccess) { SalinCallbacks.OnEvent(data, type); } else { SalinCallbacks.OnError((ErrorCode)data.errorCode, type); } // 각 콜백, 데이터 유무를 확인하여 콜백 실행 ////아직 어떤 식으로 처리 해야할지 정해야됨 //errorHandler.ExcuteCallback(errorCode, () => //{ // callback.OnEvent(isSuccess, data, type); // //if (protocolCallback != null) // // protocolCallback(data); // //if (successCallback != null) // // successCallback(isSuccess); //}); // 통신완료후 데이터를 초기화합니다. // 해당 함수 안에서 통신중을 알리는 플래그가 해제됩니다. - isTransmitData ClearData(); } }
void SpeakerLinkOff(Speaker speaker) { string key = speakerDic.FirstOrDefault(x => x.Value == speaker).Key; speakerDic.Remove(key); Destroy(speaker.gameObject); SalinCallbacks.OnUserDisconnectVoice(key); }
public void OnDisconnected(Photon.Realtime.DisconnectCause cause) { SalinCallbacks.OnDisconnectVoice(); Destroy(this.gameObject); //Debug.LogErrorFormat("OnDisconnected cause={0}", cause); //if (cause == Photon.Realtime.DisconnectCause.None || cause == Photon.Realtime.DisconnectCause.DisconnectByClientLogic) //{ // return; //} }
public void OnJoinedRoom() { if (this.autoTransmit) { if (voiceConnection.PrimaryRecorder == null) { voiceConnection.PrimaryRecorder = this.GetComponent <Recorder>(); } voiceConnection.PrimaryRecorder.TransmitEnabled = autoTransmit; voiceConnection.PrimaryRecorder.Init(voiceConnection.VoiceClient); } SalinCallbacks.OnConnectVoice(); }
/// <summary> /// 유저 접속시 들어오는 구문 /// 스피커 프리팹이 생성될때 불립니다. /// 입장한 유저의 닉네임과 아이디를 저장합니다. /// </summary> /// <param name="speaker"></param> void SpeakerLinkOn(Speaker speaker) { speaker.enabled = !isMute; speaker.OnRemoteVoiceRemoveAction += SpeakerLinkOff; object speakerNickName; object speakerID; speaker.Actor.CustomProperties.TryGetValue(SalinAPIKey.nickname, out speakerNickName); speaker.Actor.CustomProperties.TryGetValue(SalinAPIKey.userID, out speakerID); if (speakerDic.ContainsKey((string)speakerID) || (string)speakerID == id) { Debug.LogError("동일한 키(id)값이 이미 들어있습니다."); SalinCallbacks.OnUserConnectVoiceFail(SalinSDK.ErrorCode.Error); Destroy(speaker.gameObject); } else { speakerDic.Add((string)speakerID, speaker); SalinCallbacks.OnUserConnectVoice((string)speakerNickName, (string)speakerID); } }
public void OnJoinRoomFailed(short returnCode, string message) { SalinCallbacks.OnConnectVoiceFail(SalinSDK.ErrorCode.Error); }