ET服务器端实现热重载

 逻辑热重载

ET服务器端实现热重载_第1张图片

修改启动项实现本地逻辑热重载  

ET服务器端实现热重载_第2张图片

本地启动项目后在控制台run窗口 按Enter键,输入 —— “R”  在按Enter实现本地逻辑热重载

ET服务器端实现热重载_第3张图片


服务器上线部署后就无法通过命令行实现热重载功能,需要通过发送网络消息来实现
定义消息:在OuterMessage.proto下

//ResponseType R2C_ReloadDll
message C2R_ReloadDll   // IRequest
{
    int32 RpcId = 1;
}

message R2C_ReloadDll  //  IResponse
{
    int32 RpcId = 90;
    int32 Error = 91;
    string Message = 92;
}

在Server.Hotfix Demo下新建消息处理类C2R_ReloadDllHandler 

namespace ET
{
     public class C2R_ReloadDllHandler : AMRpcHandler
     {
          protected override async ETTask Run(Session session, C2R_ReloadDll request, R2C_ReloadDll response)
          {
              await Game.WaitFrameFinish();
              //实现代码逻辑热重载
              CodeLoader.Instance.LoadHotfix();
              EventSystem.Instance.Load();
          }
     }
}

配置热重载 

启动项的启动参数还是要保持一致

ET服务器端实现热重载_第4张图片

把FullName改为Name 

ET服务器端实现热重载_第5张图片

本地启动项目后在控制台run窗口 按Enter键,输入 —— “C +配置表的名字”  在按Enter实现本地配置热重载 

ET服务器端实现热重载_第6张图片

 验证热重载是否成功

ET服务器端实现热重载_第7张图片

 启动项目,然后修改配置表

ET服务器端实现热重载_第8张图片

配置热重载成功:

ET服务器端实现热重载_第9张图片


如果所有配置都要热重载

ET服务器端实现热重载_第10张图片

case "C All":
   Log.Console(UnitConfigCategory.Instance.Get(1001).Name);
   ConfigComponent.Instance.Load();
   Log.Console(UnitConfigCategory.Instance.Get(1001).Name);
break;

 启动项目后,修改配置表为米克尔All

ET服务器端实现热重载_第11张图片

你可能感兴趣的:(服务器,运维)