public NotifyWinService() { //File.AppendAllText(@"D:\345.txt", "aa"); InitializeComponent(); InitConfig(); logger.Debug("OO"); m_Bootstrap = BootstrapFactory.CreateBootstrap(); serviceHelper = new WcfServiceHelper(); m_Dispacher = new System.Timers.Timer(); m_Dispacher.Interval = 500; m_Dispacher.Elapsed += M_Dispacher_Elapsed; }
private static void RunAsConsole() { Console.WriteLine("初始化..."); IBootstrap bootstrap = BootstrapFactory.CreateBootstrap(); if (!bootstrap.Initialize()) { SetConsoleColor(ConsoleColor.Red); Console.WriteLine("初始化失败"); Console.ReadKey(); return; } Console.WriteLine("启动中..."); var result = bootstrap.Start(); Console.WriteLine("-------------------------------------------------------------------"); foreach (var server in bootstrap.AppServers) { if (server.State == ServerState.Running) { SetConsoleColor(ConsoleColor.Green); Console.WriteLine("- {0} 运行中", server.Name); } else { SetConsoleColor(ConsoleColor.Red); Console.WriteLine("- {0} 启动失败", server.Name); } } Console.ResetColor(); Console.WriteLine("-------------------------------------------------------------------"); switch (result) { case StartResult.Failed: SetConsoleColor(ConsoleColor.Red); Console.WriteLine("无法启动服务,更多错误信息请查看日志"); Console.ReadKey(); return; case StartResult.None: SetConsoleColor(ConsoleColor.Red); Console.WriteLine("没有服务器配置,请检查你的配置!"); Console.ReadKey(); return; case StartResult.PartialSuccess: SetConsoleColor(ConsoleColor.Red); Console.WriteLine("一些服务启动成功,但是还有一些启动失败,更多错误信息请查看日志"); break; case StartResult.Success: Console.WriteLine("服务已经开始!"); break; } Console.ResetColor(); Console.WriteLine("输入'quit'以停止服务"); var serviceHelper = new WcfServiceHelper(); serviceHelper.Start(); NotifyServer nserver = bootstrap.AppServers.ToList()[0] as NotifyServer; GlobalControl.GlobalControl.MainSSServer = nserver; while (true) { if (MessageEqueue.ServerMainQueue.Count == 0) { continue; } var msgInfo = MessageEqueue.ServerMainQueue.Dequeue(); if (msgInfo.Body == "quit") { break; } var sessionList = nserver.GetAllSessions().Where(x => msgInfo.UserName == "-1" || x.UserName.Equals(msgInfo.UserName, StringComparison.OrdinalIgnoreCase)).ToList(); foreach (var session in sessionList) { byte[] data = msgInfo.ToBytes(); session.Send(data, 0, data.Length); } } serviceHelper.Close(); }