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()); }