Administrator 5 月之前
父節點
當前提交
1c52d4e86c

+ 6 - 17
incubator-game/src/main/java/com/incubator/game/GGame.java

@@ -143,24 +143,13 @@ public class GGame extends AbstractService {
     private void initServiceIp() {
         //RedisUtil.set(RedisKeyConstant.WK_NUMBER+RedisKeyConstant.WK_NUMBER_VALUE, "0");
         HashMap<String, WkServerStatus> wkServe = RedisUtil.getWkToRedis(RedisKeyConstant.WK_SERVE);
-        String name = RedisKeyConstant.WK_SERVE_VALUE;
+        String name = RedisKeyConstant.WK_SERVE_KEY;
         String type = RedisKeyConstant.WK_SERVE_TYPE;
-        if (wkServe == null) {
-            WkServerStatus wkServerStatus = new WkServerStatus();
-            wkServerStatus.setName(name);
-            wkServerStatus.setNum(0);
-            wkServerStatus.setType(type);
-            RedisUtil.saveWkToRedis(RedisKeyConstant.WK_SERVE, wkServerStatus);
-        } else {
-            if (!wkServe.containsKey(name)) {
-                WkServerStatus wkServerStatus = new WkServerStatus();
-                wkServerStatus.setName(name);
-                wkServerStatus.setNum(0);
-                wkServerStatus.setType(type);
-                RedisUtil.saveWkToRedis(RedisKeyConstant.WK_SERVE, wkServerStatus);
-            }
-
-        }
+        WkServerStatus wkServerStatus = new WkServerStatus();
+        wkServerStatus.setName(name);
+        wkServerStatus.setNum(0);
+        wkServerStatus.setType(type);
+        RedisUtil.saveWkToRedis(RedisKeyConstant.WK_SERVE, wkServerStatus);
     }
 
     @Override

+ 2 - 2
incubator-game/src/main/java/com/incubator/game/constant/RedisKeyConstant.java

@@ -38,7 +38,7 @@ public class RedisKeyConstant {
      * 服务域名或者ip端口信息 value当前服务域名或者ip端口信息,分割符为: 比如127.0.0.1:8080,127.0.0.1:8081
      */
     public static final String WK_SERVE = "wk:serve";
-    public static final String WK_SERVE_VALUE = "127.0.0.1:9000";
+    public static final String WK_SERVE_KEY = "127.0.0.1:9000";
     // 0:普通房间 1:赛事房间  8 大厅
     public static final String WK_SERVE_TYPE = "8";
 
@@ -53,7 +53,7 @@ public class RedisKeyConstant {
     public static final String WK_RACE = "wk:race";
 
 
-    public static final String WK_ROOM_MAP = "wk:roomMap:";
+    public static final String WK_ROOM_MAP = "wk:roomMap";
 
 
 

+ 4 - 3
incubator-game/src/main/java/com/incubator/game/data/jedis/RedisUtil.java

@@ -1,11 +1,13 @@
 package com.incubator.game.data.jedis;
 
+import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson2.JSON;
 import com.dyuproject.protostuff.LinkedBuffer;
 import com.dyuproject.protostuff.ProtostuffIOUtil;
 import com.dyuproject.protostuff.runtime.RuntimeSchema;
 import com.google.gson.Gson;
 import com.incubator.game.constant.WkServerStatus;
+import com.incubator.game.data.po.RoomPO;
 import com.incubator.game.room.Room;
 import redis.clients.jedis.Jedis;
 import redis.clients.jedis.exceptions.JedisDataException;
@@ -851,13 +853,12 @@ public final class RedisUtil {
 
 	private static String serializeRoom(Room room) {
 		// 使用 JSON 序列化 Room 对象
-		Jedis jedis = JedisPoolUtil.getJedis();
-		return new Gson().toJson(room);
+		return JSONUtil.toJsonStr(room);
 	}
 
 	private static Room deserializeRoom(String json) {
 		// 使用 JSON 反序列化为 Room 对象
-		return new Gson().fromJson(json, Room.class);
+		return  JSONUtil.toBean(json, Room.class);
 	}
 
 

+ 4 - 1
incubator-game/src/main/java/com/incubator/game/data/po/RoomPO.java

@@ -86,9 +86,12 @@ public class RoomPO {
 	public int wildCard;
 	/** 比赛Id */
 	public long contestId;
-	public RoomPO() {}
+	public String roomIp;
+
+    public RoomPO() {}
 
 	public void init() {
+		this.roomIp =  "";
 		this.contestId = 0;
 		this.roomId = 0;
 		this.type = 0;

+ 2 - 2
incubator-game/src/main/java/com/incubator/game/listener/PublicListener.java

@@ -33,7 +33,7 @@ public class PublicListener extends GameServerConnectionListener {
 		//connection.setAttribute(LastReadTimeMills, System.currentTimeMillis());
 		Log.info("链路打开 : {}", connection);
 		// 测试redis连接 key后期优化
-		WkServerStatus wkToRedis = RedisUtil.getWkToRedis(RedisKeyConstant.WK_SERVE, RedisKeyConstant.WK_SERVE_VALUE);
+		WkServerStatus wkToRedis = RedisUtil.getWkToRedis(RedisKeyConstant.WK_SERVE, RedisKeyConstant.WK_SERVE_KEY);
 		//在线人数加1
 		assert wkToRedis != null;
 		int num = wkToRedis.getNum() + 1;
@@ -61,7 +61,7 @@ public class PublicListener extends GameServerConnectionListener {
 			}
 			Log.info("连接已关闭: {}", connection);
 			Log.info("连接关闭: {}", connection);
-			WkServerStatus wkToRedis = RedisUtil.getWkToRedis(RedisKeyConstant.WK_SERVE, RedisKeyConstant.WK_SERVE_VALUE);
+			WkServerStatus wkToRedis = RedisUtil.getWkToRedis(RedisKeyConstant.WK_SERVE, RedisKeyConstant.WK_SERVE_KEY);
 			//在线人数-1
 			assert wkToRedis != null;
 			if ( wkToRedis.getNum() > 0){

+ 1 - 1
incubator-game/src/main/java/com/incubator/game/room/FSGDRoom.java

@@ -585,7 +585,7 @@ public class FSGDRoom extends Room {
         data.put("curDiscardPlayer", this.data.disCardPlayer != null ? this.data.disCardPlayer.getId() : "");
         data.put("curDiscardSex", this.data.disCardPlayer != null ? this.data.disCardPlayer.data.sex : 0);
         data.put("curPassList", this.data.passList);
-
+        data.put("roomIp",this.data.roomIp);
         data.put("myInfo", player.playerRoomToMessage(true));
         List<Map<String, Object>> otherInfo = new ArrayList<>();
         for (Player tmPlayer : this.actors.values()) {

+ 2 - 1
incubator-game/src/main/java/com/incubator/game/room/GDRoom.java

@@ -68,6 +68,7 @@ public class GDRoom extends Room {
         //初始化状态
         this.state = 0;
         //初始化比赛
+
     }
 
     /**
@@ -1419,7 +1420,7 @@ public class GDRoom extends Room {
         data.put("curDiscardPlayer", this.data.disCardPlayer != null ? this.data.disCardPlayer.getId() : "");
         data.put("curDiscardSex", this.data.disCardPlayer != null ? this.data.disCardPlayer.data.sex : 0);
         data.put("curPassList", this.data.passList);
-
+        data.put("roomIp",this.data.roomIp);
         data.put("myInfo", player.playerRoomToMessage(true));
         List<Map<String, Object>> otherInfo = new ArrayList<>();
         for (Player tmPlayer : this.actors.values()) {

+ 3 - 1
incubator-game/src/main/java/com/incubator/game/room/Room.java

@@ -123,7 +123,7 @@ public class Room implements GRoomInterface {
         this.scheduler = null;
         // 从缓存移除
         RoomService.getInstance().roomMap.remove(this.data.roomId);
-        RedisUtil.removeKeyFromRoomMap(RedisKeyConstant.WK_ROOM_MAP, this.data.roomId);
+        //RedisUtil.removeKeyFromRoomMap(RedisKeyConstant.WK_ROOM_MAP, this.data.roomId);
         // 重置房间数据
         this.resetRoom();
         // 归还房间对象
@@ -147,4 +147,6 @@ public class Room implements GRoomInterface {
     public void setPort(String s) {
         this.port = s;
     }
+
+
 }

+ 7 - 32
incubator-game/src/main/java/com/incubator/game/room/RoomService.java

@@ -60,21 +60,12 @@ public class RoomService {
      * @return
      */
     public long randomRoomId() {
-        Map<Long, Room> roomMapFromRedis = RedisUtil.getRoomMapFromRedis(RedisKeyConstant.WK_ROOM_MAP);
-
         long roomNumber;
         // 循环生成,直到找到一个唯一的房间号
         do {
             roomNumber = RandomUtil.randomSixDigits();
-        } while (roomMapFromRedis.containsKey(roomNumber));
+        } while (this.roomMap.containsKey(roomNumber));
         return roomNumber;
-
-//        long roomNumber;
-//        // 循环生成,直到找到一个唯一的房间号
-//        do {
-//            roomNumber = RandomUtil.randomSixDigits();
-//        } while (this.roomMap.containsKey(roomNumber));
-//        return roomNumber;
     }
 
     /**
@@ -83,20 +74,12 @@ public class RoomService {
      * @return
      */
     public long randomRoomIdByContest() {
-        Map<Long, Room> roomMapFromRedis = RedisUtil.getRoomMapFromRedis(RedisKeyConstant.WK_ROOM_MAP);
-
         long roomNumber;
         // 循环生成,直到找到一个唯一的房间号
         do {
             roomNumber = RandomUtil.randomSevenDigits();
-        } while (roomMapFromRedis.containsKey(roomNumber));
+        } while (this.roomMap.containsKey(roomNumber));
         return roomNumber;
-//        long roomNumber;
-//        // 循环生成,直到找到一个唯一的房间号
-//        do {
-//            roomNumber = RandomUtil.randomSevenDigits();
-//        } while (this.roomMap.containsKey(roomNumber));
-//        return roomNumber;
     }
 
     /**
@@ -106,9 +89,7 @@ public class RoomService {
      * @return
      */
     public Room getRoom(long roomId) {
-        Map<Long, Room> roomMapFromRedis = RedisUtil.getRoomMapFromRedis(RedisKeyConstant.WK_ROOM_MAP);
-        return roomMapFromRedis.getOrDefault(roomId, null);
-//        return this.roomMap.getOrDefault(roomId, null);
+        return this.roomMap.getOrDefault(roomId, null);
     }
 
     /**
@@ -118,17 +99,11 @@ public class RoomService {
      * @return
      */
     public Room getRoomByPlayerId(String playerId) {
-        Map<Long, Room> roomMapFromRedis = RedisUtil.getRoomMapFromRedis(RedisKeyConstant.WK_ROOM_MAP);
-        for (Room room : roomMapFromRedis.values()) {
+        for (Room room : this.roomMap.values()) {
             if (room != null && room.actors != null && room.actors.containsKey(playerId)) {
                 return room;
             }
         }
-//        for (Room room : this.roomMap.values()) {
-//            if (room != null && room.actors != null && room.actors.containsKey(playerId)) {
-//                return room;
-//            }
-//        }
         return null;
     }
 
@@ -151,7 +126,7 @@ public class RoomService {
         bindServerIp(room);
         // 加入管理映射
         this.roomMap.put(room.data.roomId, room);
-        RedisUtil.saveRoomMapToRedis(RedisKeyConstant.WK_ROOM_MAP ,roomMap);
+        //RedisUtil.saveRoomMapToRedis(RedisKeyConstant.WK_ROOM_MAP ,roomMap);
         return room;
     }
 
@@ -171,8 +146,8 @@ public class RoomService {
                 wkServerStatuses.add(entry.getValue());
             }
         }
-        String ip = selectLeastPopulatedServer(wkServerStatuses).get().getName();
-        room.setIp(ip);
+        room.data.roomIp = selectLeastPopulatedServer(wkServerStatuses).get().getName();
+        System.out.println(" room.data.roomIp ======================================================>>>>>>>>>>>" +  room.data.roomIp);
     }
 
     /**

+ 1 - 1
incubator-game/src/main/java/com/incubator/game/room/ZDRoom.java

@@ -1451,7 +1451,7 @@ public class ZDRoom extends Room {
         data.put("curDiscardPlayer", this.data.disCardPlayer != null ? this.data.disCardPlayer.getId() : "");
         data.put("curDiscardSex", this.data.disCardPlayer != null ? this.data.disCardPlayer.data.sex : 0);
         data.put("curPassList", this.data.passList);
-
+        data.put("roomIp",this.data.roomIp);
         data.put("myInfo", player.playerRoomToMessage(true));
         List<Map<String, Object>> otherInfo = new ArrayList<>();
         for (Player tmPlayer : this.actors.values()) {