Example #1
0
        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;

        }
Example #2
0
        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();
        }