完善网络消息的处理中心
-
作用:分发到各自对应的模块去处理
-
在GameServer中创建一个文件夹Logo
-
创建一个所有的模块类继承的接口,IHandler,一个断开方法,一个接收消息的方法
-
创建操作码对应的模块类
-
在网络消息的处理中心分发到每个模块类中
Server项目图
IHandler的实现
namespace GameServer.Logic
{
/// <summary>
///每个模块处理的接口
/// </summary>
public interface IHandler
{
void DisConnected(ClientPeer clientPeer);
void Receive(ClientPeer client,int subCode,object value);
}
}
四个模块类的实现
//账号模块
namespace GameServer.Logic
{
/// <summary>
/// 账号模块的处理
/// </summary>
public class AccountHandler : IHandler
{
public void DisConnected(ClientPeer clientPeer)
{
}
public void Receive(ClientPeer client, int subCode, object value)
{
}
}
}
//匹配模块
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MyServer;
namespace GameServer.Logic
{
/// <summary>
/// 匹配模块的处理
/// </summary>
public class MatchHandler : IHandler
{
public void DisConnected(ClientPeer clientPeer)
{
}
public void Receive(ClientPeer client, int subCode, object value)
{
}
}
}
//聊天模块
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MyServer;
namespace GameServer.Logic
{
/// <summary>
/// 聊天模块的处理
/// </summary>
public class ChantHandler : IHandler
{
public void DisConnected(ClientPeer clientPeer)
{
}
public void Receive(ClientPeer client, int subCode, object value)
{
}
}
}
//战斗模块
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MyServer;
namespace GameServer.Logic
{
/// <summary>
/// 战斗模块的处理
/// </summary>
public class FightHandler : IHandler
{
public void DisConnected(ClientPeer clientPeer)
{
}
public void Receive(ClientPeer client, int subCode, object value)
{
}
}
}
完善网络消息处理中心,分发消息到各自对应的模块
sing GameServer.Logic;
using MyServer;
using Protocol.Code;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GameServer
{
/// <summary>
/// 消息处理中心,分发到对应的模块类
/// </summary>
public class NetMessageCenter : IApplication
{
private AccountHandler accountHandler = new AccountHandler();
private ChantHandler chantHandler = new ChantHandler();
private MatchHandler matchHandler = new MatchHandler();
private FightHandler fightHandler = new FightHandler();
/// <summary>
/// 断开连接,分发到各个对应的模块进行处理
/// </summary>
/// <param name="client"></param>
public void Disconnected(ClientPeer client)
{
fightHandler.DisConnected(client);
matchHandler.DisConnected(client);
chantHandler.DisConnected(client);
accountHandler.DisConnected(client);
}
/// <summary>
/// 接收消息,分发到各自对应的模块进行处理
/// </summary>
/// <param name="client">客户端连接对象</param>
/// <param name="msg">网络消息类</param>
public void Receive(ClientPeer client, NetMsg msg)
{
switch (msg.opCode)
{
case OpCode.Account:
accountHandler.Receive(client,msg.subCode,msg.value);
break;
case OpCode.Chat:
chantHandler.Receive(client, msg.subCode, msg.value);
break;
case OpCode.Match:
matchHandler.Receive(client, msg.subCode, msg.value);
break;
case OpCode.Fight:
fightHandler.Receive(client, msg.subCode, msg.value);
break;
}
}
}
}
有需要学习视频的欢迎关注微信公众号