public void GetOnlineClients() { imcp = new IMCommParamLineState() { msgType = msgType.LineState, isSuccess = true, IMModels = Program.MainForm.Services }; jsonStr = JsonConvert.SerializeObject(imcp); Clients.Caller.addMessage(jsonStr); }
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()); }