Proxy Module 与 Handshake
最后更新:2026 年 7 月 16 日
Proxy Module 是客户端进入 PlayServ 的物理入口。它负责 handshake 流程,校验连接的前置条件,应用连接策略,然后才允许客户端在逻辑上就绪、参与服务端的 gameplay 逻辑。
handshake 提供了一个受控的单点:在客户端被认定为就绪之前,PlayServ 可以在这里校验身份和 Session 约束。连接策略的决策也在这里执行。
信息
当客户端需要与 PlayServ 建立 Session,并进入一个 gameplay 系统可以安全开始工作的状态时 —— RPC 调用、Event、Group 和数据订阅 —— 就使用这个流程。
handshake 流程
1
授权与基本校验
在 handshake 过程中,Proxy 会执行授权:
- 校验客户端 token
- 校验
GameId
校验不通过则拒绝该连接。
2
连接策略:同一设备的多个连接
如果 Proxy 发现同一个 UserDeviceToken 存在多个活跃连接,并且服务端代码中声明了 TooManyConnections 这个 RPC 方法,就会调用它。
这个方法接收:
Current—— 新的 SessionAll—— 所有 Session,包括 新的这一个
方法返回应当保持活跃的 Session 列表。
[Server]
public class ClientConnection
{
// Connection policy validation
public Session[] TooManyConnections(Session Current, Session[] All)
{
// Current - new session
// All - all sessions including the new one
return All; // keep all sessions, allow the new connection
return [Current]; // close all sessions except the new one
return []; // close all sessions for the user
}
}
注意
连接策略在客户端被认定为就绪之前就已生效。请把 TooManyConnections 看作那道关卡 —— 它决定新连接能否与之前的连接共存。
3
注册连接
所有检查都通过后,Proxy 会按 GameId 注册这个客户端连接。
4
逻辑连接与 ClientReady
客户端在逻辑上接入 Game Server —— 也就是运行在 RPC Module 中的游戏代码 —— 之后,会发出 ClientReady 这个 Event。
到了这一步,Game Server 就可以做出最终决定:是否允许该客户端参与游戏。
下一步
- Session Lifecycle & States —— handshake 的结果如何映射到 Session 状态
- User Login & Authentication —— 认证如何影响 handshake 的路径
- RPC & Server-side Game Logic —— 响应
ClientReady的 game server 代码放在哪里