public async void LeaveSession() { RtcRoom rtcRoom = Conductor.Instance.CurrentRoom; if (rtcRoom != null) { foreach (Peer peer in rtcRoom.Peers) { //since we call each other, we should say bye to each other Task t = peer.SendBye(); peer.OnStringMessage -= Peer_OnStringMessage; peer.OnBinaryMessage -= Peer_OnBinaryMessage; peer.OnRemoteArgbWithCameraTransform -= Peer_OnRemoteArgbWithCameraTransform; } await Conductor.Instance.LeaveRtcRoom(); } DeselectAllExperts(); EnableAllExpers(true); videoContainer.SetActive(false); pictureContainer.SetActive(false); pictureBar.SetActive(false); }
async public Task <RtcRoom> EnterSession(string sessionNumber, string pinCode) { RtcRoom rtcRoom = null; try { long roomNumber = long.Parse(sessionNumber); rtcRoom = await Conductor.Instance.EnterRtcRoom(roomNumber, pinCode); //SessionNumber = rtcRoom.RoomNumber.ToString(); //PinCode = rtcRoom.PinCode; //Connected = true; foreach (Peer peer in rtcRoom.Peers) { peer.OnStringMessage += Peer_OnStringMessage; peer.OnBinaryMessage += Peer_OnBinaryMessage; peer.OnRemoteArgbWithCameraTransform += Peer_OnRemoteArgbWithCameraTransform; await peer.Call(); } } catch (FormatException ex) { Debug.Log("wrong format of session number"); } return(rtcRoom); }
async public Task <RtcRoom> NewSession() { RtcRoom rtcRoom = await Conductor.Instance.CreateRtcRoom(); if (rtcRoom != null) { //SessionNumber = rtcRoom.RoomNumber.ToString(); //PinCode = rtcRoom.PinCode; return(rtcRoom); } return(null); }
public async void OnJoinClicked() { Debug.Log("Joining session: " + SESSION_GUID); EnableAllExpers(false); videoContainer.SetActive(true); RtcRoom rtcRoom = null; try { CancellationToken cancellation = new CancellationToken(); JToken result = await AzureService.Instance.findRoomForSpace(SESSION_GUID, cancellation); rtcRoom = result.ToObject <RtcRoom>(); if (rtcRoom != null) { await EnterSession(rtcRoom.RoomNumber.ToString(), rtcRoom.PinCode); } } catch (Exception ex) { Debug.Log("failed to find room: " + ex.Message); if (ex.Message == "room not found") { //no room, create it try { rtcRoom = await NewSession(); CancellationToken cancellation = new CancellationToken(); /* * var serializer = new JsonSerializer * { * ContractResolver = new CamelCasePropertyNamesContractResolver() * }; */ await AzureService.Instance.updateRoomForSpace(SESSION_GUID, JToken.FromObject(rtcRoom), cancellation); } catch (Exception subEx) { EnableAllExpers(true); Debug.Log("failed to create room: " + subEx.Message); showErr("无法加入会话"); } } else if (ex.Message == "locked") { EnableAllExpers(true); showErr("另一位参与者正在创建会话,请稍候尝试"); } else { EnableAllExpers(true); showErr("无法加入会话"); } } }