master
zhouwei 2026-03-04 17:43:15 +08:00
parent f05b0c2641
commit 025362469b
1 changed files with 22 additions and 0 deletions

View File

@ -239,6 +239,28 @@ public class EXGameController extends GameController {
String roomId = params.getString("roomid");
int groupId = params.getInt("groupid");
//检查机器人是否已经在房间中
RobotUser existingUser = getRobotRoomInfo(String.valueOf(robotId));
if (existingUser != null && existingUser.getCurrentRoomId() > 0) {
String existingConnecId = existingUser.getCurrentRoomId() + "_" + robotId;
log.warn("机器人{}已在房间{}中connecId: {}", robotId, existingUser.getCurrentRoomId(), existingConnecId);
//检查现有连接状态
TaurusClient existingClient = existingUser.getClient();
if (existingClient == null || !existingClient.isConnected()) {
log.warn("现有连接不健康,准备清理并重新加入");
robotConnectionManager.disconnectFromGameServer(existingConnecId);
} else {
log.info("现有连接健康,跳过重复加入");
//返回成功响应
ITObject response = TObject.newInstance();
response.putString("status", "success");
response.putString("message", "机器人已在房间中");
MainServer.instance.sendResponse(gid, 0, response, session);
return;
}
}
//检查Redis中该房间是否真的包含当前机器人
if (!checkRobotInRoomRedis(roomId, String.valueOf(robotId))) {
//Redis中不存在该机器人 清理本地可能的错误映射