Colyseus 的断线重连和心跳机制
Colyseus 是一个专注于实时多人游戏开发的 WebSocket 框架,支持客户端断线重连和心跳功能以保持连接稳定性。这些功能对于多人游戏或实时协作应用至关重要,确保即使在网络波动时,玩家或用户的状态不会丢失。
1. 断线重连机制
原理
- Colyseus 会为每个客户端生成一个唯一的
sessionId
,用于标识客户端。 - 当客户端意外断开连接时,Colyseus 会保留客户端的状态一段时间(默认 20 秒,可配置)。
- 如果客户端在这段时间内尝试重新连接且提供正确的
sessionId
,服务器会恢复之前的会话,重新加入房间,并继续使用原来的状态。
实现步骤
服务端
- 在服务器端房间中,Colyseus 自动支持断线重连机制。
- 可通过
onLeave
钩子监听客户端断开连接:onLeave(client: Client, consented: boolean) { if (!consented) { console.log(\`\${ client.sessionId} 断开连接,等待重连...\`); } else { console.log(\`\${ client.sessionId} 主动离开\`); } }
- 如果客户端在
allowReconnection
的时间窗口内重新连接,onLeave
会暂停处理,直到onJoin
或超时:async