/************************************************************************* * * Meeting Logic Functions * *************************************************************************/ public LiveMeeting CreateRoom(Int64 roomId) { //if room is already on-going if (liveRoomList.TryGetValue(roomId, out LiveMeeting room) && room != null) { return(room); } //check if exist in database Meeting meeting = _meetingService.Get(roomId); if (meeting == null) { return(null); } //if exist, open meeting LiveMeeting liveMeeting = new LiveMeeting(meeting); if (liveRoomList.TryAdd(liveMeeting.Id, liveMeeting)) { //send via callback BizGazeCallback.onMeetingStart(liveMeeting); //log to database _logService.StartMeeting(meeting); return(liveMeeting); } else { return(null); } }
private void _FinishRoom(Int64 roomId) { LiveMeeting room = null; if (!liveRoomList.TryGetValue(roomId, out room)) { return; } //set finish time room.closeTime = DateTime.Now; room.Clients.ForEach(c => { if (c.leaveTime == default(DateTime)) { c.leaveTime = room.closeTime; } }); //send via callback BizGazeCallback.onMeetingEnd(room); //log to database _logService.FinishMeeting(room._meeting); room.Clients.ForEach(c => connSessionMap.TryRemove(c.connId, out _)); room.Clients.Clear(); room.Dispose(); liveRoomList.TryRemove(roomId, out _); }
public bool LeaveClient(string connectionId) { LiveMeeting room = getClientRoom(connectionId); if (room == null) { return(false); } var client = room.LeaveClient(connectionId); if (client == null) { return(false); } connSessionMap.TryRemove(connectionId, out _); //send via callback BizGazeCallback.onMeetingLeft(room, client); //log to database _logService.LeftMeeting(room._meeting, client.participant); return(true); }
/** * ************************************************************************** * * Join GroupChattig | webinar * in webinar [ userId = 0 ] means Anonymous user * * ************************************************************************** */ public Client JoinClientToRoom(Int64 roomId, Int64 userId, string anonymousUserName, string connectionId) { LiveMeeting room = getRoomById(roomId); if (room == null) { return(null); } var client = room.JoinClient(userId, anonymousUserName, connectionId); if (client == null) { return(null); } connSessionMap[connectionId] = room; //send via callback BizGazeCallback.onMeetingJoined(room, client); //log to database _logService.JoinMeeting(room._meeting, client.participant); return(client); }
public static void onMeetingEnd(LiveMeeting meeting) { MeetingEnd payload = new MeetingEnd(); payload.ConferenceId = meeting.Id; payload.StartTime = meeting.openTime; payload.StartTime = meeting.closeTime; meeting.Clients.ForEach(c => { MeetingParticipant p = new MeetingParticipant(); p.ParticipantId = c.BGId; p.Present = c.joined; if (c.joined) { p.JoinTime = c.joinTime; p.LeaveTime = c.leaveTime; } payload.Participants.Add(p); }); string callbackRoot = meeting.CallbackUrl; string url = string.Format(Urls.meetingEndUrl, callbackRoot); PostHelper.PostJson(url, payload, Urls.authKey); }
public async Task ControlMessage(string destId, string msg) { LiveMeeting room1 = roomMgr.getClientRoom(Context.ConnectionId); LiveMeeting room2 = roomMgr.getClientRoom(destId); if (room1.Id != room2.Id) { return; } await SendMessage("controlMessage", Context.ConnectionId, destId, msg); }
public static void onMeetingStart(LiveMeeting meeting) { MeetingStart payload = new MeetingStart(); payload.ConferenceId = meeting.Id; payload.StartTime = meeting.openTime; string callbackRoot = meeting.CallbackUrl; string url = string.Format(Urls.meetingStartUrl, callbackRoot); PostHelper.PostJson(url, payload, Urls.authKey); }
public static void onMeetingLeft(LiveMeeting meeting, Client user) { MeetingLeave payload = new MeetingLeave(); payload.ConferenceId = meeting.Id; payload.participantId = user.BGId; payload.LeaveTime = user.leaveTime; string callbackRoot = meeting.CallbackUrl; string url = string.Format(Urls.meetingLeaveUrl, callbackRoot); PostHelper.PostJson(url, payload, Urls.authKey); }
public async Task RoomUserList(Int64 roomId) { LiveMeeting room = roomMgr.getRoomById(roomId); if (room == null) { return; } await RoomBroadcast( roomId, "roomUserList", JsonConvert.SerializeObject(room.Clients.Select(c => c.getInfo()))); }
public async Task SignalingMessage(string sourceId, string destId, string msg) { //just relay if (destId == "room") { LiveMeeting room = roomMgr.getClientRoom(Context.ConnectionId); if (room != null) { await RoomBroadcast(room.Id, "SignalingMessage", msg); } } else { await SendMessage("SignalingMessage", sourceId, destId, msg); } }
public async Task LeaveRoom() { var clientID = Context.ConnectionId; LiveMeeting room = roomMgr.getClientRoom(Context.ConnectionId); if (room != null) { roomMgr.LeaveClient(Context.ConnectionId); await RemoveCallerFromGroup(room.Id.ToString()); await SendMessageToCaller( Protocol.BGtoUser.ROOM_LEFT, clientID); await RoomBroadcast(room.Id, Protocol.BGtoUser.ROOM_LEFT, clientID); } }
public async Task ControlBroadcastMessage(string msg) { LiveMeeting room = roomMgr.getClientRoom(Context.ConnectionId); await RoomBroadcast(room.Id, "controlBroadcastMessage", msg); }