session管理
一、world核心数据结构:环境+session
SessionMap m_sessions;
Queue m_QueuedSessions;
typedef UNORDERED_MAP<uint32, Weather*> WeatherMap;
WeatherMap m_weathers;
二、WorldSession 核心数据结构 玩家+信道+消息队列
Player *_player;
WorldSocket *m_Socket;
ACE_Based::LockedQueue<WorldPacket*, ACE_Thread_Mutex> _recvQueue; // 每个session有一个消息队列
整个session就是不停的fetch,处理msg的过程
OpcodeHandler const& opHandle = opcodeTable[packet->GetOpcode()]; // 利用一次映射找到handler
handle_input_payload----int WorldSocket::ProcessIncoming (WorldPacket* new_pct)--------void WorldSession::QueuePacket(WorldPacket* new_packet)
三、player核心数据结构 map、权限、社会关系、管理员?拍卖?谈话 存储 包裹 物品……
概述:所有command缓存在socket的队列中,各个子系统的总入口是player
服务端每一帧的逻辑:
1、从OS处取出到达的事件到本进程(所有的事件已经缓存在socket队列中)
2、依次调度各个子系统或子子系统
对于node.js而言,线程调度、事件缓存、回调机制已经都实现了,程序员只要实现具体的逻辑和定时器(子系统)就可以了
分享到:
相关推荐
网络游戏目前在国内相当热门,棋牌类游戏在网络游戏中占有比较...该文总结了一款通用的棋牌类网络游戏服务端的架构设计,介绍了基本架构、通信协议、多线程模型和第3方接I:1的相关内容,并对整个架构作了一定分析。
Webview WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页 Activity Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,是一个负责与...
自己做leecode题目的总结,做个分享从事服务端开发,少不了要接触网络编程。epoll作为linux下高性能网络服务器的必备技术至关重要,nginx、redis、skynet和大部分游戏服务器都使用到这一多路复用技术。 因为epoll的...
本书将向读者展示用Java语言和它的类库创建2D游戏,所涉及的主题包括高速性能、双缓冲图像、动画、声音、媒体控制、I/O和网络支持等。将带领大家一步一步学习编写Java游戏,最终打造属于自己的Java游戏。 目录...
内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加...
内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加...
内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加...
内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加...
内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加...
内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加...
你已经不再对XML一无所知,并且已经走在了网络技术的前沿。整个学习过程好象并不很难哦:) 五.Meta数据(Metadata)---专业的XML使用者会使用meta数据来工作。 在HTML中我们知道可以使用meta标识来定义网页的关键字...