- []
统一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