tiger
这些实现对于fantasy来说,是很简单的实现。框架已经封装好了socket消息的协议,收发,消息事件的逻辑。
你之所以不会移植到fantasy框架下来实现这种最基本的聊天功能。应该是对框架的使用还不太了解。
我可以帮你梳理一下:
- 这种Chat服务,类似于Map服务,只是Chat服只有收发聊天消息的逻辑,并不像地图服那样还有帧或状态同步逻辑,角色战斗与移动控制等逻辑。
- 你只需要在服务器配置表中增加Chat服,这个需要你理解fantasy服务器的设置是意味着什么,是一台主机上的一个进程下的线程创建chat服务,还是有多台服务器每台主机的一个进程下的线程创建chat服务。
总之一个进程下的线程创建的chat服可作为一个聊天频道。
- 在游戏中进入聊天频道,就类似于进入某一个地图。在地图服或聊天频道服上并没有登录验证逻辑,所以并不知道某条发到地图或聊天服的消息是哪个玩家的。
所以需要一个进入聊天频道的过程,需要先验证玩家信息,缓存下来,才能收发消息。具体过程大体是:需要在网关服绑定AddressableRouteComponent设置转发目标,这样才能通过网关转发聊天频道的消息。还需要在聊天服创建玩家对应的unit,在聊天服务上通过AddressableMessageComponent组件注册unit为可寻址。
- 跟地图服类似,聊天频道服也有长时间没有消息,退出聊天频道的逻辑。