Пример #1
0
        private void Client_OnReveieveData(ReceieveMessage message)
        {
            //   messageList.InvokeOnUiThreadIfRequired(() => messageList.AppendText(message.DataStr));
            switch (message.Action)
            {
            case (int)CommandType.OnlineList:    //在线用户
                var userList2 = JsonHelper.DeserializeObj <List <OnlineListResult> >(message.DataStr);
                onlineInfo.OnOnlineChange(userList2);
                break;

            case (int)CommandType.PrivateChat:    //接收到学生私聊信息
                var PrivateChatMessage = JsonHelper.DeserializeObj <PrivateChatRequest>(message.DataStr);
                this.InvokeOnUiThreadIfRequired(() => { ReceievePrivateMessage(PrivateChatMessage); });
                break;

            case (int)CommandType.TeamChat:    //收到群聊信息
                var TeamChatRequest = JsonHelper.DeserializeObj <TeamChatRequest>(message.DataStr);
                this.InvokeOnUiThreadIfRequired(() => { ReceieveTeamMessage(TeamChatRequest); });
                break;

            case (int)CommandType.GroupChat:    //收到群聊信息
                var groupChatRequest = JsonHelper.DeserializeObj <GroupChatRequest>(message.DataStr);
                this.InvokeOnUiThreadIfRequired(() => { ReceieveGroupMessage(groupChatRequest); });
                break;

            case (int)CommandType.OneUserLogIn:    //某个学生登录
                var newUser = JsonHelper.DeserializeObj <List <OnlineListResult> >(message.DataStr);
                onlineInfo.OnNewUserLoginIn(newUser);
                //  OnlineInfo_AddOnLine(onlineInfo, e2);
                break;

            case (int)CommandType.StudentCall:    //课堂点名
                var callInfo = JsonHelper.DeserializeObj <StuCallRequest>(message.DataStr);
                UpdateOnLineStatus(callInfo);
                break;

            case (int)CommandType.UserLoginOut:    //用户登出
                var loginoutInfo = JsonHelper.DeserializeObj <UserLogoutResponse>(message.DataStr);
                onlineInfo.OnUserLoginOut(loginoutInfo);
                break;

            case (int)CommandType.ScreenInteract:    //收到视频流
                ScreenInteract_Response resp = JsonHelper.DeserializeObj <ScreenInteract_Response>(message.DataStr);
                this.InvokeOnUiThreadIfRequired(() =>
                {
                    PlayRtspVideo(resp.url);
                });
                break;

            case (int)CommandType.StopScreenInteract:    //收到停止接收视频流
                this.InvokeOnUiThreadIfRequired(() =>
                {
                    StopPlay();
                });
                break;

            default:
                break;
            }
        }
Пример #2
0
        //   string GlobalVariable.MasterTitle;

        public UserMainForm()
        {
            InitializeComponent();
            CreateFilePath();
            //  GlobalVariable.MasterTitle = "教师端";
            if (GlobalVariable.IsHuiShenXiTong)
            {
                // GlobalVariable.MasterTitle = "指挥室";
                mSignIn.Visible     = false;
                mHandUp.Visible     = false;
                mPrivateSMS.Visible = false;
                mFileShare.Visible  = false;
            }

            chatForm    = new ChatForm();
            Text        = GlobalVariable.LoginUserInfo.DisplayName;
            tuopan.Text = Text;
            #region 处理收到的消息


            //学生端收到消息
            GlobalVariable.client.OnStudentReceiveMessage = (message) =>
            {
                switch (message.Action)
                {
                case (int)CommandType.UserLoginRes:
                    break;

                case (int)CommandType.TeacherLoginIn:    //主机端登录

                    TeacherLoginInResponse teachRes = JsonHelper.DeserializeObj <TeacherLoginInResponse>(message.DataStr);
                    ShowNotify(GlobalVariable.MasterTitle + "登录");
                    GlobalVariable.TeacherIP = teachRes.teachIP;
                    DoAction(() =>
                    {
                        //  CreateUDPHole();
                    });
                    break;

                case (int)CommandType.TeacherLoginOut:    //主机端登出
                    ShowNotify(GlobalVariable.MasterTitle + "登出");
                    if (theadScreen != null && theadScreen.ThreadState == ThreadState.Background)
                    {
                        isRunScreen = false;
                        Thread.Sleep(200);
                        theadScreen.Abort();
                    }
                    break;

                case (int)CommandType.ScreenInteract:    //播放视频流
                    ShowNotify("收到视频流,开始播放");
                    ScreenInteract_Response resp = JsonHelper.DeserializeObj <ScreenInteract_Response>(message.DataStr);
                    DoAction(() =>
                    {
                        ShowRtspVideo(resp.url);
                    });
                    break;

                case (int)CommandType.StopScreenInteract:    //停止视频流
                    ShowNotify("视频流已结束,停止播放");
                    DoAction(() =>
                    {
                        StopPlay();
                    });
                    break;

                case (int)CommandType.LockScreen:    //锁屏
                    ShowNotify("当前屏幕被锁定");
                    LockScreen(false);
                    break;

                case (int)CommandType.StopLockScreen:    //终止锁屏
                    ShowNotify("屏幕锁定已解除");
                    StopLockScreen();
                    break;

                case (int)CommandType.Quiet:    //屏幕肃静
                    ShowNotify("当前屏幕被锁定并黑屏");
                    LockScreen(true);
                    break;

                case (int)CommandType.StopQuiet:    //终止屏幕肃静
                    ShowNotify("屏幕锁定及黑屏已解除");
                    StopLockScreen();
                    break;

                case (int)CommandType.PrivateChat: //收到私聊信息
                case (int)CommandType.TeamChat:    //收到组聊信息
                case (int)CommandType.GroupChat:   //收到群聊信息
                    DoReceiveChatMessage(message);
                    break;

                case (int)CommandType.BeginCall:    //开始点名
                    ShowNotify("开始点名");
                    DoAction(() =>
                    {
                        OpenCallForm();
                    });
                    break;

                case (int)CommandType.EndCall:    //结束点名
                    ShowNotify("结束点名");
                    DoAction(() =>
                    {
                        CloseCallForm();
                    });
                    break;

                case (int)CommandType.CreateTeam:    //收到创建群组信息
                    var teamInfo = JsonHelper.DeserializeObj <TeacherTeam>(message.DataStr);
                    GlobalVariable.LoadTeamList(teamInfo);
                    DoAction(() =>
                    {
                        if (GlobalVariable.CheckChatFormIsOpened())
                        {
                            GlobalVariable.ShowNotifyMessage("群组信息已经更改");
                            chatForm.ReflashTeamChat();
                        }
                        //  chatForm.BringToFront();
                        //  chatForm.Show();
                    });
                    break;

                case (int)CommandType.CallStudentShow:    //收到请求客户端演示
                    ShowNotify("收到推送请求,开始广播当前屏幕");
                    DoAction(() =>
                    {
                        currPushCreamType = CommandType.CallStudentShow;
                        PushVideoCream();
                    });
                    break;

                case (int)CommandType.CallStudentShowForMySelf:    //收到请求客户端演示
                    ShowNotify("收到推送请求,开始推送当前屏幕到" + GlobalVariable.MasterTitle);
                    DoAction(() =>
                    {
                        currPushCreamType = CommandType.CallStudentShowForMySelf;
                        PushVideoCream();
                    });
                    break;

                case (int)CommandType.CallStudentShowVideoToTeacher:    //收到请求客户端演示视频
                    ShowNotify("收到推送请求,开始推送摄像头视频到" + GlobalVariable.MasterTitle);
                    DoAction(() =>
                    {
                        currPushCreamType = CommandType.CallStudentShowVideoToTeacher;
                        PushVideoCream();
                    });
                    break;

                case (int)CommandType.StopStudentShow:    //停止演示
                    ShowNotify("停止演示");
                    DoAction(() =>
                    {
                        GlobalVariable.client.StopScreenInteract();
                        GlobalVariable.client.Send_StopScreenInteract();
                        isPushScream = false;
                    });
                    break;

                case (int)CommandType.ForbidPrivateChat:    //收到禁止私聊
                    ShowNotify(GlobalVariable.MasterTitle + "已禁止私聊");
                    GlobalVariable.LoginUserInfo.AllowPrivateChat = false;
                    ChangeChatAllowOrForbit(ChatType.PrivateChat, false);
                    break;

                case (int)CommandType.ForbidTeamChat:    //收到禁止群聊
                    ShowNotify(GlobalVariable.MasterTitle + "已禁止群聊");
                    GlobalVariable.LoginUserInfo.AllowTeamChat = false;
                    ChangeChatAllowOrForbit(ChatType.TeamChat, false);
                    break;

                case (int)CommandType.AllowPrivateChat:    //收到允许私聊
                    ShowNotify(GlobalVariable.MasterTitle + "已允许私聊");
                    GlobalVariable.LoginUserInfo.AllowPrivateChat = true;
                    ChangeChatAllowOrForbit(ChatType.PrivateChat, true);
                    break;

                case (int)CommandType.AllowTeamChat:    //收到允许群聊
                    ShowNotify(GlobalVariable.MasterTitle + "已允许群聊");
                    GlobalVariable.LoginUserInfo.AllowTeamChat = true;
                    ChangeChatAllowOrForbit(ChatType.TeamChat, true);
                    break;

                case (int)CommandType.DeleteUserInGroup:    //收到删除群组成员
                    var deleteInfo = JsonHelper.DeserializeObj <DeleteTeamMemberRequest>(message.DataStr);
                    DoAction(() =>
                    {
                        DeleteTeamMember(deleteInfo);
                    });

                    break;

                default:
                    break;
                }
            };


            #endregion
            GlobalVariable.client.DueLostMessage();
            GlobalVariable.client.SendXinTiao();
            //  GlobalVariable.client.OnReveieveData += Client_OnReveieveData;
            //   GlobalVariable.client.Send_StudentInMainForm();
        }
Пример #3
0
        public UserMainForm()
        {
            InitializeComponent();
            Text        = GlobalVariable.LoginUserInfo.DisplayName;
            tuopan.Text = Text;
            #region 处理收到的消息
            //教师端登入
            GlobalVariable.client.OnTeacherLoginIn = (message) =>
            {
                TeacherLoginInResponse teachRes = JsonHelper.DeserializeObj <TeacherLoginInResponse>(message.DataStr);
                GlobalVariable.TeacherIP = teachRes.teachIP;
                DoAction(() =>
                {
                    SendScreen();
                });
            };
            //教师端登出
            GlobalVariable.client.OnTeacherLoginOut = (message) =>
            {
                if (theadScreen != null && theadScreen.ThreadState == ThreadState.Background)
                {
                    isRunScreen = false;
                    Thread.Sleep(200);
                    theadScreen.Abort();
                }
            };



            //收到视频流
            GlobalVariable.client.OnScreenInteract = (message) =>
            {
                ScreenInteract_Response resp = JsonHelper.DeserializeObj <ScreenInteract_Response>(message.DataStr);
                DoAction(() =>
                {
                    ShowViewRtsp2(resp.url);
                });
            };
            //收到视频流停止
            GlobalVariable.client.OnStopScreenInteract = (message) =>
            {
                DoAction(() =>
                {
                    StopPlay();
                });
            };
            //锁屏
            GlobalVariable.client.OnLockScreen = (message) =>
            {
                LockScreen(false);
            };
            //终止锁屏
            GlobalVariable.client.OnStopLockScreen = (message) =>
            {
                StopLockScreen();
            };
            //屏幕肃静
            GlobalVariable.client.OnQuiet = (message) =>
            {
                LockScreen(true);
            };
            //终止屏幕肃静
            GlobalVariable.client.OnStopQuiet = (message) =>
            {
                StopLockScreen();
            };

            //收到私聊信息
            GlobalVariable.client.OnPrivateChat = (message) =>
            {
                var chatResponse = JsonHelper.DeserializeObj <PrivateChatRequest>(message.DataStr);
                DoAction(() =>
                {
                    var chatMessage = chatResponse.ToChatMessage();
                    OpenChatForm(chatMessage);
                });
            };
            //收到群聊信息
            GlobalVariable.client.OnTeamChat = (message) =>
            {
                var teamChatResponse = JsonHelper.DeserializeObj <TeamChatRequest>(message.DataStr);

                DoAction(() =>
                {
                    var request = teamChatResponse.ToChatMessage();
                    OpenChatForm(request);
                });
            };
            //收到群聊信息
            GlobalVariable.client.OnGroupChat = (message) =>
            {
                var groupChatResponse = JsonHelper.DeserializeObj <GroupChatRequest>(message.DataStr);

                DoAction(() =>
                {
                    var request = groupChatResponse.ToChatMessage();
                    OpenChatForm(request);
                });
            };

            //点名
            GlobalVariable.client.OnBeginCall = (message) =>
            {
                DoAction(() =>
                {
                    OpenCallForm();
                });
            };
            //结束点名
            GlobalVariable.client.OnEndCall = (message) =>
            {
                DoAction(() =>
                {
                    CloseCallForm();
                });
            };
            //收到创建群组信息
            GlobalVariable.client.OnCreateTeam = (message) =>
            {
                var teamInfo = JsonHelper.DeserializeObj <TeamChatCreateOrUpdateRequest>(message.DataStr);
                GlobalVariable.RefleshTeamList(teamInfo);
                DoAction(() =>
                {
                    chatForm.BringToFront();
                    chatForm.Show();
                    chatForm.ReflashTeamChat();
                });
            };
            //收到请求学生演示
            GlobalVariable.client.OnCallStudentShow = (message) =>
            {
                DoAction(() =>
                {
                    GlobalVariable.client.CreateScreenInteract();
                    GlobalVariable.client.Send_ScreenInteract();
                });
            };
            //停止演示
            GlobalVariable.client.OnStopStudentShow = (message) =>
            {
                DoAction(() =>
                {
                    GlobalVariable.client.StopScreenInteract();
                    GlobalVariable.client.Send_StopScreenInteract();
                });
            };
            //收到禁止私聊
            GlobalVariable.client.OnForbidPrivateChat = (message) =>
            {
                GlobalVariable.LoginUserInfo.AllowPrivateChat = false;
                ChangeChatAllowOrForbit(ChatType.PrivateChat, false);
            };
            //收到禁止群聊
            GlobalVariable.client.OnForbidTeamChat = (message) =>
            {
                GlobalVariable.LoginUserInfo.AllowTeamChat = false;
                ChangeChatAllowOrForbit(ChatType.TeamChat, false);
            };
            //收到允许私聊
            GlobalVariable.client.OnAllowPrivateChat = (message) =>
            {
                GlobalVariable.LoginUserInfo.AllowPrivateChat = true;
                ChangeChatAllowOrForbit(ChatType.PrivateChat, true);
            };
            //收到允许群聊
            GlobalVariable.client.OnAllowTeamChat = (message) =>
            {
                GlobalVariable.LoginUserInfo.AllowTeamChat = true;
                ChangeChatAllowOrForbit(ChatType.TeamChat, true);
            };


            #endregion
            GlobalVariable.client.DueLostMessage();

            //  GlobalVariable.client.OnReveieveData += Client_OnReveieveData;
            //   GlobalVariable.client.Send_StudentInMainForm();
        }
Пример #4
0
        public MainForm()
        {
            InitializeComponent();
            //flowLayoutPanel1.MouseWheel += FlowLayoutPanel1_MouseWheel;
            //for (int i = 0; i < 30; i++)
            //{
            //    ScreenCaptureInfo sc = new ScreenCaptureInfo();
            //    sc.UserName = "******" + i;
            //    sc.DisplayName = "disname" + i;
            //    AddStudentScreenToPanel(sc);
            //}


            CreateFilePath();
            this.onlineListGrid1.Columns.Cast <DataGridViewColumn>().ToList().ForEach(f => f.SortMode = DataGridViewColumnSortMode.NotSortable);
            _clientTitle         = GlobalVariable.ClientTitle;
            this.Text            = GlobalVariable.SystemTitle;
            menuStudentShow.Text = GlobalVariable.ClientTitle + "演示";
            myGroupBox7.Text     = "在线" + GlobalVariable.ClientTitle + "列表";
            myGroupBox8.Text     = GlobalVariable.ClientTitle + "屏幕";
            if (GlobalVariable.IsHuiShenXiTong)
            {
                menuClassNamed.Hide();
                menuExportSign.Hide();
                menuFileShare.Hide();
                menuRomoteControl.Hide();
                tableLayoutPanel1.ColumnCount = 1;
                tableLayoutPanel1.RowCount    = 1;
                myGroupBox1.Text   = "群聊";
                menuGroupChat.Text = "群组聊天";
                onlineListGrid1.Columns["col_isval"].Visible = false;
                //  tableLayoutPanel3.ColumnStyles[4].Width = 0f;
            }

            //   GlobalVariable.client.OnClentIsConnecting += Client_OnClentIsConnecting;
            InitOnlineInfo();
            GlobalVariable.LoadTeamFromXML();

            #region 接收消息事件
            GlobalVariable.client.OnTeacherReceiveMessage = (message) =>
            {
                switch ((CommandType)message.Action)
                {
                case CommandType.OnlineList:
                    var userList2 = JsonHelper.DeserializeObj <List <OnlineUserResponse> >(message.DataStr);

                    onlineInfo.OnOnlineChange(userList2);
                    break;

                case CommandType.StudentShowToTeacher:
                case CommandType.ScreenInteract:
                    ScreenInteract_Response resp = JsonHelper.DeserializeObj <ScreenInteract_Response>(message.DataStr);
                    this.InvokeOnUiThreadIfRequired(() =>
                    {
                        PlayRtspVideo(resp.url);
                    });
                    break;

                case CommandType.StopScreenInteract:
                    this.InvokeOnUiThreadIfRequired(() =>
                    {
                        StopPlay();
                    });
                    break;

                case CommandType.PrivateChat:
                case CommandType.TeamChat:
                case CommandType.GroupChat:
                    DoReceiveChatMessage(message);
                    break;

                case CommandType.OneUserLogIn:
                    var newUser = JsonHelper.DeserializeObj <List <OnlineUserResponse> >(message.DataStr);
                    onlineInfo.OnNewUserLoginIn(newUser);
                    break;

                case CommandType.UserLoginOut:
                    var loginoutInfo = JsonHelper.DeserializeObj <UserLogoutResponse>(message.DataStr);
                    onlineInfo.OnUserLoginOut(loginoutInfo);
                    DeleteScreen(loginoutInfo);
                    break;

                case CommandType.StudentCall:
                    var callInfo = JsonHelper.DeserializeObj <StuCallRequest>(message.DataStr);
                    UpdateOnLineStatus(callInfo);
                    break;

                case CommandType.CreateTeam:    //收到创建群组信息
                    var teamInfo = JsonHelper.DeserializeObj <TeacherTeam>(message.DataStr);
                    GlobalVariable.LoadTeamList(teamInfo);
                    this.InvokeOnUiThreadIfRequired(() =>
                    {
                        if (GlobalVariable.CheckChatFormIsOpened())
                        {
                            GlobalVariable.ShowNotifyMessage("群组信息已经更改");
                            chatForm.ReflashTeamChat();
                        }
                    });
                    break;

                default:
                    break;
                }
            };
            #endregion

            GlobalVariable.client.DueLostMessage();
            GlobalVariable.client.Send_OnlineList();
            GlobalVariable.client.SendXinTiao();
            LogUser();
        }