Pārlūkot izejas kodu

websoekct调整

kk 3 mēneši atpakaļ
vecāks
revīzija
a722ba4686

+ 32 - 0
game-business/src/main/java/com/game/business/task/WebSokcetTask.java

@@ -0,0 +1,32 @@
+package com.game.business.task;
+
+import com.game.business.util.Common;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.websocket.Session;
+import java.io.IOException;
+
+@Component
+public class WebSokcetTask {
+
+//    @Scheduled(cron = "0 0/1 * * * ? ")
+    public void liveDividedTask() throws IOException {
+
+        if(Common.sessionMap.containsKey(Common.GAME_ONE_CODE)){
+            Session session = Common.sessionMap.get(Common.GAME_ONE_CODE);
+            if(!session.isOpen()){
+                Common.sessionMap.remove(Common.GAME_ONE_CODE);
+                session.close();
+            }
+        }
+
+        if(Common.sessionMap.containsKey(Common.GAME_TWO_CODE)){
+            Session session = Common.sessionMap.get(Common.GAME_TWO_CODE);
+            if(!session.isOpen()){
+                Common.sessionMap.remove(Common.GAME_TWO_CODE);
+                session.close();
+            }
+        }
+    }
+}

+ 7 - 0
game-business/src/main/java/com/game/business/util/Common.java

@@ -1,5 +1,9 @@
 package com.game.business.util;
 
+import javax.websocket.Session;
+import java.util.HashMap;
+import java.util.Map;
+
 public class Common {
 
     public static final String GANME_ONE_NAME = "one";
@@ -13,4 +17,7 @@ public class Common {
     public static final String WS_GAME_ONE_REMARK_URL = "ws://47.238.102.31:8000/ws";
     public static final String WS_GAME_TWO_URL = "ws://47.115.54.173:8000/ws";
     public static final String WS_GAME_TWO_REMARK_URL = "ws://47.115.54.173:8000/ws";
+
+
+    public static Map<String, Session> sessionMap = new HashMap<>();
 }

+ 9 - 2
game-business/src/main/java/com/game/business/websocket/client/GameOneClient.java

@@ -33,12 +33,13 @@ public class GameOneClient {
     public void onOpen(Session session) throws Exception{
         System.out.println("game one 游戏已连接 server");
         // 发送游戏编码
-        session.getBasicRemote().sendText("{\"code\":\"" + Common.GAME_ONE_CODE + "\"}");
+        session.getBasicRemote().sendText("ping");
+//        Common.sessionMap.put(Common.GAME_ONE_CODE, session);
     }
 
     @OnClose
     public void onClose(Session session) throws Exception{
-        System.out.println("game on 游戏已断开 server:" + new Date());
+        System.out.println("game one 游戏已断开 server:" + new Date());
         connect();
     }
 
@@ -67,6 +68,12 @@ public class GameOneClient {
             }
 
             System.out.println("game one 接收数据" + message);
+
+            if(message.equals("pong")){
+                session.getBasicRemote().sendText("ping");
+                return;
+            }
+
             appGameBettingTask.gameDataTask(message, Common.GAME_ONE_CODE);
         }catch (Exception e){
             e.printStackTrace();

+ 8 - 1
game-business/src/main/java/com/game/business/websocket/client/GameTwoClient.java

@@ -22,7 +22,8 @@ public class GameTwoClient {
     @OnOpen
     public void onOpen(Session session) throws Exception{
         System.out.println("game two 游戏已连接 server");
-//        session.getBasicRemote().sendText("{\"code\":\"" + Common.GAME_ONE_CODE + "\"}");
+        session.getBasicRemote().sendText("ping");
+//        Common.sessionMap.put(Common.GAME_TWO_CODE, session);
     }
 
     @OnClose
@@ -56,6 +57,12 @@ public class GameTwoClient {
             }
 
             System.out.println("game two 接收数据" + message);
+
+            if(message.equals("pong")){
+                session.getBasicRemote().sendText("ping");
+                return;
+            }
+
             appGameBettingTask.gameDataTask(message, Common.GAME_TWO_CODE);
         }catch (Exception e){
             e.printStackTrace();