private void DoWork(object state) { if (isRunning == true) { return; } isRunning = true; if (GloableCache.ZLClient != null && GloableCache.ZLServerOnline) { var mediaListResp = GloableCache.ZLClient.getMediaList(); if (mediaListResp.code == -300) { GloableCache.ZLServerOnline = false; } else { GloableCache.ZLServerOnline = true; if (mediaListResp.data != null) { //定时获取媒体流列表 GloableCache.MediaStreams.Clear(); mediaListResp.data.ForEach(v => { GloableCache.MediaStreams.Add(v); }); } } //比对我的拉流和服务器拉流的差异 diffStremPorxy(); } else { if (!GloableCache.IsInitServer) { //服务器还没初始化完毕的时候,不要重连服务器 return; } GloableCache.ZLServerOnline = false; //尝试重连服务器 var ip = DataBaseCache.Configs.Where(p => p.ConfigKey == ConfigKeys.ZLMediaServerIp).FirstOrDefault().ConfigValue; var port = DataBaseCache.Configs.Where(p => p.ConfigKey == ConfigKeys.ZLMediaServerPort).FirstOrDefault().ConfigValue; Console.WriteLine("开始连接ZLMediaKitServer,IP:" + ip + ",Port:" + port + "......"); var sec = DataBaseCache.Configs.Where(p => p.ConfigKey == ConfigKeys.ZLMediaServerSecret).FirstOrDefault().ConfigValue; var client = new STRealVideo.Lib.ZLClient("http://" + ip + ":" + port, sec); var configs = client.getServerConfig(); if (configs.code == -300) { GloableCache.ZLServerOnline = false; } else { GloableCache.ZLClient = client; GloableCache.ZLMediaServerConfig = configs.data.FirstOrDefault(); GloableCache.ZLServerOnline = true; } } isRunning = false; }
public async Task <BaseModel <string> > InitAsync(InitServerReqDto req) { BaseModel <String> result = new BaseModel <string>(); try { await BrowserReceiveLoaderMessageAsync("开始校验数据...", Enums.MessageType.Info); if (String.IsNullOrWhiteSpace(req.Account) || String.IsNullOrWhiteSpace(req.Password)) { await BrowserReceiveLoaderMessageAsync("登录信息填写错误,请重新填写!", Enums.MessageType.Info); return(result.Failed("登录信息填写错误,请重新填写!")); } await BrowserReceiveLoaderMessageAsync("开始验证流媒体服务器<a href=\"http://" + req.ZLMediaServerIp + ":" + req.ZLMediaServerPort + "\" target=\"_blank\">http://" + req.ZLMediaServerIp + ":" + req.ZLMediaServerPort + "</a>", Enums.MessageType.Warning); var client = new STRealVideo.Lib.ZLClient("http://" + req.ZLMediaServerIp + ":" + req.ZLMediaServerPort, req.ZLMediaServerSecret); var configs = client.getServerConfig(); if (configs != null && configs.code == 0 && configs.data != null && configs.data.Count != 0 && configs.data[0].ContainsKey("api.secret")) { //连接服务器成功,开始生成数据 await BrowserReceiveLoaderMessageAsync("服务器验证通过!", Enums.MessageType.Success); await BrowserReceiveLoaderMessageAsync("开始创建数据库基础信息...", MessageType.Warning); } else { await BrowserReceiveLoaderMessageAsync("连接流媒体服务器失败:" + configs.msg, Enums.MessageType.Failed); return(result.Failed("连接流媒体服务器失败:" + configs.msg)); } } catch (Exception ex) { await BrowserReceiveLoaderMessageAsync("验证流媒体服务器异常,异常信息:" + ex.Message, Enums.MessageType.Failed); return(result.Failed("验证流媒体服务器异常,异常信息:" + ex.Message)); } try { var userId = Tools.NewID; var date = DateTime.Now; var user = new TbUser() { Id = userId, LoginName = req.Account, LoginPasswd = req.Password, Name = "超级管理员", Sex = Enums.SexEnum.Man, Tel = null, Address = null, CreateBy = userId, UpdateBy = userId, CreateTs = date, UpdateTs = date, State = (int)BaseStatus.Normal }; zLDataBase.Users.Add(user); var menus = InitTableData.GenerateMenu(userId); zLDataBase.Menus.AddRange(menus); var role = InitTableData.GenerateRole(userId); zLDataBase.Roles.Add(role); menus.ForEach(v => { zLDataBase.MenuRoles.Add(new TbMenuRole() { MenuId = v.Id, RoleId = role.Id }); }); zLDataBase.UserRoles.Add(new TbUserRole() { RoleId = role.Id, UserId = userId }); var config_serverIp = new TbConfig() { ConfigKey = ConfigKeys.ZLMediaServerIp, ConfigValue = req.ZLMediaServerIp }; var config_serverPort = new TbConfig() { ConfigKey = ConfigKeys.ZLMediaServerPort, ConfigValue = req.ZLMediaServerPort }; var config_serverSec = new TbConfig() { ConfigKey = ConfigKeys.ZLMediaServerSecret, ConfigValue = req.ZLMediaServerSecret }; zLDataBase.Configs.Add(config_serverIp); zLDataBase.Configs.Add(config_serverPort); zLDataBase.Configs.Add(config_serverSec); await BrowserReceiveLoaderMessageAsync("正在提交数据库事物...", Enums.MessageType.Warning); await zLDataBase.SaveChangesAsync(); await BrowserReceiveLoaderMessageAsync("恭喜,系统已经初始化完毕,Enjoy It!", Enums.MessageType.Success); Startup.ReadDataBase2Cache(zLDataBase); LoginLogic(mapper.Map <UserDto>(user));//执行登录逻辑 Thread.Sleep(3000); return(result.Success("初始化完毕!")); } catch (Exception ex) { await BrowserReceiveLoaderMessageAsync("初始化数据库发生异常:" + ex.Message, Enums.MessageType.Failed); return(result.Failed("初始化数据库发生异常:" + ex.Message)); } }