- []
统一Client和Server的Recv、Send代码 -
SessionManager用于管理客户端状态信息 - []
使用Expression创建Delegate并缓存来优化Route执行效率https://stackoverflow.com/questions/840261/passing-arguments-to-c-sharp-generic-new-of-templated-type - [] Tool的导出ClientExtension,增加Protobuf Data Namespace的自动识别
-
Connected和Disconnected事件 -
Recv线程和Send线程的异常保护 - 无法连接时的错误处理
-
Recv阻塞,导致Disconnect调用无法结束 -
HeartBeat实现 -
AddListener改为监听任意包,而不仅仅是Push包 - 增加
WaitFor方法,相当于AddListenerOnce,但是利用Task<T>返回 -
AddListener的回调增加Package和Package<T>的支持 -
AddListener的回调增加MainThreadActionRunner,让回调在主线程中运行 - 增加断线重连的支持
-
Recv线程和Send线程的异常保护 - host增加
*的支持 - 新客户端连接事件
- 客户端断线事件
-
Processor增加客户端连接和断线的回调 -
Kick方法测试 -
Stop测试 -
OnRecv改为直接调用Processor而不是Router -
HeartBeat实现
- [] 必须先启动,用于管理和缓存服务器列表
- [] 其他
Cluster服务器启动时,都要先连接Master服务器,并报告以下的信息- 服务器名称
- 服务器类型
- 服务器支持的
Route列表 - 服务器权重
- [] 连接所有
Cluster服务器,并确保他们的活跃,如果有服务器失去连接,则更新列表,并推送给列表中的所有活跃服务器 - [] 提供的
Route- 获取服务器列表
- 推送服务器列表更新
- [] 从
Master获取服务器列表 - [] 提供的Route
- 根据权重分配
Connector的IP和端口
- 根据权重分配
- []
Session数据缓存- 当客户端连接时,建立缓存
- 当客户端失去连接时,删除缓存
- 当转发请求的
Response或Push带Session数据时,更新缓存
- [] 连接所有的
Logic服务器- 缓存
Route到服务器的映射和权重列表 - 利用映射列表,处理
HandShake - 把客户端的请求根据映射和权重列表,转发给对应的
Logic服务器 - 把
Logic服务器的Response和Push转发给对应的客户端
- 缓存
- [] 客户端处理
- 给客户端的
Session填上ClientGuid,用于后续转发的映射 - 当有新客户端连接/断开连接时,更新
ClientGuid列表,并推送给所有的Logic服务器
- 给客户端的
- [] 缓存所有
ClientGuid到Connector的映射表
- [] 对
Client的封装,提供远程Processor