Example #1
0
        static void Main(string[] args)
        {
            BaseProgram.PubMain1(args, EServerType.网关);

            #region 启动服务器后执行服务器数据初始化

            OnServerStart();

            #endregion 启动服务器后执行服务器数据初始化

            #region  务器事件

            //新连接事件
            BaseServerInfo.AppServer.NewSessionConnected += new SessionHandler <LunarSession>(Dispatcher.OnSessionConnected);

            //连接断开事件
            BaseServerInfo.AppServer.SessionClosed += new SessionHandler <LunarSession, CloseReason>(Dispatcher.OnSessionClosed);

            //收到消息事件
            BaseServerInfo.AppServer.NewRequestReceived += new RequestHandler <LunarSession, LunarRequestInfo>(Dispatcher.OnDispatch);

            #endregion  务器事件

            BaseProgram.PubMain2();

            BaseProgram.PubMain3();


            #region 连接到其他服务器

            if (!GateServerLinkManager.Start())
            {
                loger.Fatal("连接到其他服务器失败");
            }

            #endregion 连接到其他服务器

            #region 添加读取指令的线程

            BaseServerInfo.threadDriverCmds = new Thread(new ThreadStart(DriverCmds.ThreadDriverCmds));
            BaseServerInfo.threadDriverCmds.Start();
            Thread.Sleep(1000);

            #endregion 添加读取指令的线程

            #region 添加发送消息线程

            BaseServerInfo.threadSend = new Thread(new ThreadStart(BaseDispatch.ThreadSendMain));
            BaseServerInfo.threadSend.Start();
            Thread.Sleep(1000);


            #endregion

            #region 进入主循环

            while (true)
            {
                System.Threading.Thread.CurrentThread.Join(BaseServerInfo.ServerHeartbeat);
                try
                {
                    ServerHeartbeat.Heartbeat();
                }
                catch (Exception ex)
                {
                    loger.Fatal("服务器错误", ex);
                }
            }

            #endregion 进入主循环
        }
 // 10秒心跳
 public static void HeartbeatSecond10()
 {
     GateServerLinkManager.HeartbeatSecond10();
 }