Exemple #1
0
        private void MenuItem聊天信息_Click(object sender, RoutedEventArgs e)
        {
            //var messageQueue = SoftSnackbar.MessageQueue;
            //var message = "这是一条测试数据这是一条测试数据这是一条测试数据这是一条测试数据这是一条测试数据" + index++;

            ////the message queue can be called from any thread
            //Task.Factory.StartNew(() => messageQueue.Enqueue(message));

            SetShowRenderControl(UIControls_Chat);
            UIControls_Chat.ScrollToDown();
        }
        /// <summary>
        /// 接收到服务器的字节数据的回调方法
        /// </summary>
        /// <param name="session">网络连接对象</param>
        /// <param name="customer">用户自定义的指令头,用来区分数据用途</param>
        /// <param name="data">数据</param>
        private void Net_socket_client_AcceptString(AppSession session, NetHandle customer, string data)
        {
            if (customer == CommonHeadCode.MultiNetHeadCode.弹窗新消息)
            {
                if (IsHandleCreated)
                {
                    Invoke(new Action(() =>
                    {
                        FormPopup fpp = new FormPopup(data, Color.DodgerBlue, 10000);
                        fpp.Show();
                    }));
                }
            }
            else if (customer == CommonHeadCode.MultiNetHeadCode.总在线信息)
            {
                //if (IsHandleCreated) Invoke(new Action(() =>
                //{
                //    // listBox1.DataSource = data.Split('#');

                //    NetAccount[] accounts = JArray.Parse(data).ToObject<NetAccount[]>();

                //    netClientOnline1.SetOnlineRender(accounts);
                //}));
            }
            else if (customer == CommonHeadCode.MultiNetHeadCode.关闭客户端)
            {
                if (IsHandleCreated)
                {
                    Invoke(new Action(() =>
                    {
                        Close();
                    }));
                }
            }
            else if (customer == CommonHeadCode.SimplifyHeadCode.更新公告)
            {
                //此处应用到了同步类的指令头
                if (IsHandleCreated)
                {
                    Invoke(new Action(() =>
                    {
                        UserClient.Announcement = data;
                        label_Announcement.Text = data;
                        FormPopup fpp           = new FormPopup(data, Color.DodgerBlue, 10000);
                        fpp.Show();
                    }));
                }
            }
            else if (customer == CommonHeadCode.MultiNetHeadCode.初始化数据)
            {
                //收到服务器的数据
                JObject json = JObject.Parse(data);
                UserClient.DateTimeServer = json["Time"].ToObject <DateTime>();
                List <string> chats = JArray.Parse(json["chats"].ToString()).ToObject <List <string> >();
                StringBuilder sb    = new StringBuilder();
                chats.ForEach(m => { sb.Append(m + Environment.NewLine); });


                if (IsHandleCreated)
                {
                    Invoke(new Action(() =>
                    {
                        toolStripStatusLabel_time.Text = UserClient.DateTimeServer.ToString("yyyy-MM-dd HH:mm:ss");
                        label_file_count.Text          = json["FileCount"].ToObject <int>().ToString();
                        UIControls_Chat.AddChatsHistory(sb.ToString());

                        UserClient.LogNet?.WriteDebug("Online Clients : " + json["ClientsOnline"].ToString());
                        NetAccount[] accounts = JArray.Parse(json["ClientsOnline"].ToString()).ToObject <NetAccount[]>();
                        netClientOnline1.SetOnlineRender(accounts);
                    }));
                }
            }
            else if (customer == CommonHeadCode.MultiNetHeadCode.文件总数量)
            {
                if (IsHandleCreated)
                {
                    Invoke(new Action(() =>
                    {
                        label_file_count.Text = data;
                    }));
                }
            }
            else if (customer == CommonHeadCode.MultiNetHeadCode.留言版消息)
            {
                if (IsHandleCreated)
                {
                    Invoke(new Action(() =>
                    {
                        UIControls_Chat?.DealwithReceive(data);
                    }));
                }
            }
            else if (customer == CommonHeadCode.MultiNetHeadCode.新用户上线)
            {
                if (IsHandleCreated)
                {
                    Invoke(new Action(() =>
                    {
                        UserClient.LogNet?.WriteDebug("Online Event : " + data);
                        netClientOnline1.ClientOnline(JObject.Parse(data).ToObject <NetAccount>());
                    }));
                }
            }
            else if (customer == CommonHeadCode.MultiNetHeadCode.用户下线)
            {
                if (IsHandleCreated)
                {
                    Invoke(new Action(() =>
                    {
                        netClientOnline1.ClinetOffline(data);
                    }));
                }
            }
            else if (customer == CommonHeadCode.MultiNetHeadCode.新头像更新)
            {
                UserClient.PortraitManager.UpdateSmallPortraitByName(data);
                if (IsHandleCreated)
                {
                    Invoke(new Action(() =>
                    {
                        if (data == UserClient.UserAccount.UserName)
                        {
                            pictureBox1.Image = UserClient.PortraitManager.GetSmallPortraitByUserName(data);
                        }
                        netClientOnline1.ClientUpdatePortrait(data);
                    }));
                }
            }
        }
 private void 留言板ToolStripMenuItem_Click(object sender, EventArgs e)
 {
     SetShowRenderControl(UIControls_Chat);
     UIControls_Chat?.InputFocus();
     UIControls_Chat?.ScrollToDown();
 }
Exemple #4
0
        /// <summary>
        /// 接收到服务器的字节数据的回调方法
        /// </summary>
        /// <param name="state">网络连接对象</param>
        /// <param name="customer">用户自定义的指令头,用来区分数据用途</param>
        /// <param name="data">数据</param>
        private void Net_socket_client_AcceptString(AsyncStateOne state, NetHandle customer, string data)
        {
            if (customer == CommonHeadCode.MultiNetHeadCode.弹窗新消息)
            {
                if (IsWindowShow)
                {
                    Dispatcher.Invoke(new Action(() =>
                    {
                        FormPopup fpp = new FormPopup(data, System.Drawing.Color.DodgerBlue, 10000);
                        fpp.Show();
                    }));
                }
            }
            else if (customer == CommonHeadCode.MultiNetHeadCode.总在线信息)
            {
                //if (IsWindowShow) Dispatcher.Invoke(new Action(() =>
                //{
                //    // ListBox_Onlines.ItemsSource = data.Split('#');

                //    ClientsOnline.Children.Clear();
                //    NetAccount[] accounts = JArray.Parse(data).ToObject<NetAccount[]>();

                //    foreach(var m in accounts)
                //    {
                //        Views.Controls.UserClientRenderItem userClient = new Views.Controls.UserClientRenderItem();
                //        userClient.SetClientRender(m);
                //        ClientsOnline.Children.Add(userClient);
                //    }

                //}));
            }
            else if (customer == CommonHeadCode.MultiNetHeadCode.关闭客户端)
            {
                if (IsWindowShow)
                {
                    Dispatcher.Invoke(new Action(() =>
                    {
                        Close();
                    }));
                }
            }
            else if (customer == CommonHeadCode.SimplifyHeadCode.更新公告)
            {
                //此处应用到了同步类的指令头
                if (IsWindowShow)
                {
                    Dispatcher.Invoke(new Action(() =>
                    {
                        UserClient.Announcement     = data;
                        TextBlock_Announcement.Text = data;
                        FormPopup fpp = new FormPopup(data, System.Drawing.Color.DodgerBlue, 10000);
                        fpp.Show();
                    }));
                }
            }
            else if (customer == CommonHeadCode.MultiNetHeadCode.初始化数据)
            {
                //收到服务器的数据
                JObject json = JObject.Parse(data);
                UserClient.DateTimeServer = json["Time"].ToObject <DateTime>();
                List <string> chats = JArray.Parse(json["chats"].ToString()).ToObject <List <string> >();
                StringBuilder sb    = new StringBuilder();
                chats.ForEach(m => { sb.Append(m + Environment.NewLine); });


                if (IsWindowShow)
                {
                    Dispatcher.Invoke(new Action(() =>
                    {
                        TextBlock_ServerTime.Text = UserClient.DateTimeServer.ToString("yyyy-MM-dd HH:mm:ss");
                        TextBlock_FileCount.Text  = json["FileCount"].ToObject <int>().ToString();
                        UIControls_Chat.AddChatsHistory(sb.ToString());

                        NetAccount[] accounts = JArray.Parse(json["ClientsOnline"].ToString()).ToObject <NetAccount[]>();

                        foreach (var m in accounts)
                        {
                            Views.Controls.UserClientRenderItem userClient = new Views.Controls.UserClientRenderItem();
                            userClient.SetClientRender(m);
                            ClientsOnline.Children.Add(userClient);
                        }
                    }));
                }
            }
            else if (customer == CommonHeadCode.MultiNetHeadCode.文件总数量)
            {
                if (IsWindowShow)
                {
                    Dispatcher.Invoke(new Action(() =>
                    {
                        TextBlock_FileCount.Text = data;
                    }));
                }
            }
            else if (customer == CommonHeadCode.MultiNetHeadCode.留言版消息)
            {
                if (IsWindowShow)
                {
                    Dispatcher.Invoke(new Action(() =>
                    {
                        UIControls_Chat?.DealwithReceive(data);
                    }));
                }
            }
            else if (customer == CommonHeadCode.MultiNetHeadCode.新用户上线)
            {
                if (IsWindowShow)
                {
                    Dispatcher.Invoke(new Action(() =>
                    {
                        Views.Controls.UserClientRenderItem userClient = new Views.Controls.UserClientRenderItem();
                        userClient.SetClientRender(JObject.Parse(data).ToObject <NetAccount>());
                        ClientsOnline.Children.Add(userClient);
                    }));
                }
            }
            else if (customer == CommonHeadCode.MultiNetHeadCode.用户下线)
            {
                if (IsWindowShow)
                {
                    Dispatcher.Invoke(new Action(() =>
                    {
                        Views.Controls.UserClientRenderItem item = null;
                        foreach (Views.Controls.UserClientRenderItem m in ClientsOnline.Children)
                        {
                            if (m?.UniqueId == data)
                            {
                                item = m;
                            }
                        }
                        if (item != null)
                        {
                            ClientsOnline.Children.Remove(item);
                        }
                    }));
                }
            }
            else if (customer == CommonHeadCode.MultiNetHeadCode.新头像更新)
            {
                if (IsWindowShow)
                {
                    Dispatcher.Invoke(new Action(() =>
                    {
                        foreach (Views.Controls.UserClientRenderItem m in ClientsOnline.Children)
                        {
                            m.UpdatePortrait(data);
                        }
                    }));
                }
            }
        }
Exemple #5
0
 /// <summary>
 /// 接收到服务器的字节数据的回调方法
 /// </summary>
 /// <param name="state">网络连接对象</param>
 /// <param name="customer">用户自定义的指令头,用来区分数据用途</param>
 /// <param name="data">数据</param>
 private void Net_socket_client_AcceptString(AsyncStateOne state, int customer, string data)
 {
     if (customer == CommonHeadCode.MultiNetHeadCode.弹窗新消息)
     {
         if (IsHandleCreated)
         {
             Invoke(new Action(() =>
             {
                 FormPopup fpp = new FormPopup(data, Color.DodgerBlue, 10000);
                 fpp.Show();
             }));
         }
     }
     else if (customer == CommonHeadCode.MultiNetHeadCode.总在线信息)
     {
         if (IsHandleCreated)
         {
             Invoke(new Action(() =>
             {
                 listBox1.DataSource = data.Split('#');
             }));
         }
     }
     else if (customer == CommonHeadCode.MultiNetHeadCode.关闭客户端)
     {
         if (IsHandleCreated)
         {
             Invoke(new Action(() =>
             {
                 Close();
             }));
         }
     }
     else if (customer == CommonHeadCode.SimplifyHeadCode.更新公告)
     {
         //此处应用到了同步类的指令头
         if (IsHandleCreated)
         {
             Invoke(new Action(() =>
             {
                 UserClient.Announcement = data;
                 label_Announcement.Text = data;
                 FormPopup fpp           = new FormPopup(data, Color.DodgerBlue, 10000);
                 fpp.Show();
             }));
         }
     }
     else if (customer == CommonHeadCode.MultiNetHeadCode.初始化数据)
     {
         //收到服务器的数据
         JObject json = JObject.Parse(data);
         UserClient.DateTimeServer = json["Time"].ToObject <DateTime>();
         List <string> chats = JArray.Parse(json["chats"].ToString()).ToObject <List <string> >();
         StringBuilder sb    = new StringBuilder();
         chats.ForEach(m => { sb.Append(m + Environment.NewLine); });
         if (IsHandleCreated)
         {
             Invoke(new Action(() =>
             {
                 toolStripStatusLabel_time.Text = UserClient.DateTimeServer.ToString("yyyy-MM-dd HH:mm");
                 label_file_count.Text          = json["FileCount"].ToObject <int>().ToString();
                 UIControls_Chat.AddChatsHistory(sb.ToString());
             }));
         }
     }
     else if (customer == CommonHeadCode.MultiNetHeadCode.文件总数量)
     {
         if (IsHandleCreated)
         {
             Invoke(new Action(() =>
             {
                 label_file_count.Text = data;
             }));
         }
     }
     else if (customer == CommonHeadCode.MultiNetHeadCode.留言版消息)
     {
         if (IsHandleCreated)
         {
             Invoke(new Action(() =>
             {
                 UIControls_Chat?.DealwithReceive(data);
             }));
         }
     }
 }