/// <summary> /// 主动关服 /// </summary> public void Stop(int wait_time) { int leave_time = wait_time <= 0 ? GlobalID.TOTAL_WAIT_SHUTDOWN : wait_time; Log.Info("剩余关服时间:" + leave_time); //告诉客户端关服倒计时 ws2c.ShutdownServer msg = PacketPools.Get(ws2c.msg.SHUTDOWN_SERVER) as ws2c.ShutdownServer; msg.leave_time = (ushort)leave_time; ServerNetManager.Instance.BroadcastProxyMsg(msg); //XX秒后自动关服,每秒触发一次 TimerManager.Instance.AddLoop(1000, leave_time, (timer_id, param) => { --leave_time; if (leave_time <= 0) { OnStopServer(); } else { Log.Info("剩余关服时间:" + leave_time); } }); }
/// <summary> /// 服务器即将关闭 /// </summary> private void OnServerShutdown(PacketBase packet) { ws2c.ShutdownServer msg = packet as ws2c.ShutdownServer; Log.Debug("服务器即将关闭:" + msg.leave_time); }