internal WinFormsClient()
        {
            InitializeComponent();
            var mode = ConfigurationManager.AppSettings["Mode"];

            imModel = new IMCommModel()
            {
                ComputerName = GetLocalSysInfo.GetComputerName(),
                Name         = GetLocalSysInfo.GetLoginUserName(),
                ipAddress    = GetLocalSysInfo.GetIPAddress(),
                macAddress   = GetLocalSysInfo.GetMacAddress(),
                isService    = (mode == "Service")
            };
            Services = new List <IMCommModel>();
            Clients  = new List <IMCommModel>();
            Text     = string.Format("WinForms Comm {0}", imModel.isService ? "Service" : "Client");
        }
 private void treeViewFlush(TreeView tv, bool isOnline, IMCommModel imcm)
 {
     if (isOnline)
     {
         this.Invoke((Action)(() => {
             TreeNode tn = new TreeNode()
             {
                 Name = imcm.ConnId, Text = imcm.Name, ToolTipText = imcm.ConnId
             };
             tv.Nodes.Add(tn);
         }));
     }
     else
     {
         this.Invoke((Action)(() => { tv.Nodes.RemoveByKey(imcm.ConnId); }));
     }
 }
        public override Task OnConnected()
        {
            imModel = JSON.ToObject <IMCommModel>(Context.QueryString.Get("Param"));
            //此处应该有认证
            imModel.ConnId = Context.ConnectionId;
            Program.MainForm.WriteToConsole(string.Format("{0} connected: {1} ,  IPAddr: {2} \n Count: {3}", imModel.isService ? "Service" : "Client", Context.ConnectionId, imModel.ipAddress.ToString(), imModel.isService ? Program.MainForm.Services.Count : Program.MainForm.Clients.Count));

            if (imModel.isService)
            {
                if (!Program.MainForm.Services.Exists(e => e.ConnId == imModel.ConnId))
                {
                    Program.MainForm.Services.Add(imModel);
                }
                Groups.Add(imModel.ConnId, "Service");
                imcp = new IMCommParamLineState()
                {
                    IMModel = imModel, msgType = msgType.LineState, fromConnId = imModel.ConnId, isSuccess = true
                };
                jsonStr = JsonConvert.SerializeObject(imcp);
                Clients.Group("Client", new string[0]).addMessage(jsonStr);
                Clients.Group("Service", new string[0]).addMessage(jsonStr);
            }
            else
            {
                if (!Program.MainForm.Clients.Exists(e => e.ConnId == imModel.ConnId))
                {
                    Program.MainForm.Clients.Add(imModel);
                }
                Groups.Add(imModel.ConnId, "Client");
                imcp = new IMCommParamLineState()
                {
                    IMModel = imModel, msgType = msgType.LineState, fromConnId = imModel.ConnId, isSuccess = true
                };
                jsonStr = JsonConvert.SerializeObject(imcp);
                Clients.Group("Service", new string[0]).addMessage(jsonStr);
                Clients.Group("Client", new string[0]).addMessage(jsonStr);
            }
            LogHelper.Debug("Client connected: " + JsonConvert.SerializeObject(imModel));
            return(base.OnConnected());
        }
        public override Task OnDisconnected()
        {
            var model = Program.MainForm.Services.Union(Program.MainForm.Clients).First(f => f.ConnId == Context.ConnectionId);

            Program.MainForm.WriteToConsole(string.Format("{0} disconnected: {1} , Count {2} ", model.isService ? "Service" : "Client", Context.ConnectionId, model.isService ? Program.MainForm.Services.Count : Program.MainForm.Clients.Count));

            if (Program.MainForm.Clients.Exists(e => e.ConnId == Context.ConnectionId))
            {
                imModel = Program.MainForm.Clients.Find(f => f.ConnId == Context.ConnectionId);
                Program.MainForm.Clients.Remove(imModel);
                Groups.Remove(imModel.ConnId, "Client");
                imcp = new IMCommParamLineState()
                {
                    IMModel = imModel, msgType = msgType.LineState, fromConnId = imModel.ConnId, isSuccess = false
                };
                jsonStr = JsonConvert.SerializeObject(imcp);
                Clients.Group("Service", new string[0]).addMessage(jsonStr);
                Clients.Group("Client", new string[0]).addMessage(jsonStr);
            }
            else if (Program.MainForm.Services.Exists(e => e.ConnId == Context.ConnectionId))
            {
                imModel = Program.MainForm.Services.Find(f => f.ConnId == Context.ConnectionId);
                Program.MainForm.Services.Remove(imModel);
                Groups.Remove(imModel.ConnId, "Service");
                imcp = new IMCommParamLineState()
                {
                    IMModel = imModel, msgType = msgType.LineState, fromConnId = imModel.ConnId, isSuccess = false
                };
                jsonStr = JsonConvert.SerializeObject(imcp);
                Clients.Group("Client", new string[0]).addMessage(jsonStr);
                Clients.Group("Service", new string[0]).addMessage(jsonStr);
            }
            LogHelper.Debug("Client disconnected: " + JsonConvert.SerializeObject(imModel));

            return(base.OnDisconnected());
        }