Norman_Lin的博客

个人游戏开发学习博客

ET框架-服务端-NetOuterComponent学习笔记

NetOuterComponent

请大家关注我的微博:@NormanLin_BadPixel坏像素


namespace Model
{
    public class NetOuterComponent: NetworkComponent
    {
    }
}

空空如也。有了之前的教训,这次我特意去找了找有没有扩展方法。果然不出所料。

public static class NetOuterComponentEx

我们看到,同客户端一样,也订阅了AwakeUpdate事件,并且有一个带参数的Awake方法,参数是IP地址。

public static void Awake(this NetOuterComponent self, IPEndPoint ipEndPoint)
{
    self.Awake(NetworkProtocol.TCP, ipEndPoint);
    self.MessagePacker = new ProtobufPacker();
    self.MessageDispatcher = new OuterMessageDispatcher();
}

从这里我们知道,它对消息的打包工具是ProtobufPacker,消息调度器是OuterMessageDispatcher

OuterMessageDispatcher

我们首先来对比一下服务端和客户端接收到消息后需要做的处理。

客户端在接收到消息后,只要在自己的mono层跟热更层进行调度就可以了,但是,如果服务端接收到客户端的消息,除了在自己管理的服务层进行消息调度外,客户端发送的消息还有可能需要我们去访问其他的服务器,这个时候,就需要我们服务器之间的通讯。这就需要用到我们之前学习的Actor方面的知识。(Actor我们还没学全呢。)

// gate session收到actor消息直接转发给actor自己去处理
if (message is IActorMessage)
{
    long actorId = session.GetComponent<SessionUserComponent>().User.ActorID;
    ActorProxy actorProxy = Game.Scene.GetComponent<ActorProxyComponent>().Get(actorId);
    actorProxy.Send((IMessage)message);
    return;
}

// gate session收到actor rpc消息,先向actor 发送rpc请求,再将请求结果返回客户端
if (message is IActorRequest aActorRequest)
{
    long actorId = session.GetComponent<SessionUserComponent>().User.ActorID;
    ActorProxy actorProxy = Game.Scene.GetComponent<ActorProxyComponent>().Get(actorId);
    IResponse response = await actorProxy.Call(aActorRequest);
    session.Reply(packetInfo.RpcId, response);
    return;
}

我们发现,ET框架里面的消息类型真的太多了,我想写一个关于消息类型的笔记

经过上面笔记的洗礼,大家对这里为什么要这样处理消息应该都明了了吧哈哈。不过我们还得来看看它是怎么定位ActorProxy的。

我们看到,当客户端往服务端发送消息时,通过Session就可以标识客户端,但是服务端再发送给其他服务器时,就得重新包装一下了,这个时候,Session已经是服务器与服务器对话的Session了,我们要额外保存能标识客户端的数据。

阅读更多
文章标签: ET框架
上一篇ET框架---MatchComponent学习笔记
下一篇ET框架---ActorComponent学习笔记
想对作者说点什么? 我来说一句

ET开源游戏服务器框架C#

2018年06月18日 38.49MB 下载

SSH框架学习笔记,学习交流

2011年08月10日 2.1MB 下载

lego2学习手册 ( LEGO框架学习笔记)

2011年08月11日 3.34MB 下载

mangos源码(游戏服务器端程序框架)

2010年01月07日 18.65MB 下载

MVC框架struts学习笔记

2009年08月31日 254KB 下载

mina开发文档

2013年09月09日 1.22MB 下载

Java服务端框架模板

2013年09月23日 49.07MB 下载

马士兵java框架hibernate学习笔记

2016年04月23日 618KB 下载

Hibernate学习笔记

2010年12月11日 364KB 下载

没有更多推荐了,返回首页

关闭
关闭