package com.game.business.task;

import com.game.business.util.Common;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.websocket.Session;
import java.io.IOException;

@Component
@Log4j2
public class WebSokcetTask {

    @Value("${websocket.switch}")
    private Boolean taskSwitch;

    @Scheduled(cron = "0/5 * * * * ? ")
    public void liveDividedTask() throws IOException {
//        if(!taskSwitch){
//            return;
//        }

        if(Common.sessionMap.containsKey(Common.GAME_ONE_CODE)){
            try {
                Session session = Common.sessionMap.get(Common.GAME_ONE_CODE);
                if(!session.isOpen()){
                    Common.sessionMap.remove(Common.GAME_ONE_CODE);
                    session.close();
                }else{
                    session.getBasicRemote().sendText("ping");
                }
            }catch (Exception e){
                log.info("游戏one连接异常：{}",e.getMessage());
            }

        }

        if(Common.sessionMap.containsKey(Common.GAME_TWO_CODE)){
            try {
                Session session = Common.sessionMap.get(Common.GAME_TWO_CODE);
                if(!session.isOpen()){
                    Common.sessionMap.remove(Common.GAME_TWO_CODE);
                    session.close();
                }else{
                    session.getBasicRemote().sendText("ping");
                }
            }catch (Exception e){
                log.info("游戏two连接异常：{}",e.getMessage());
            }
        }

        if(Common.sessionMap.containsKey(Common.GAME_THREES_CODE)){
            try{
                Session session = Common.sessionMap.get(Common.GAME_THREES_CODE);
                if(!session.isOpen()){
                    Common.sessionMap.remove(Common.GAME_THREES_CODE);
                    session.close();
                }else{
                    session.getBasicRemote().sendText("ping");
                }
            }catch (Exception e){
                log.info("游戏three连接异常：{}",e.getMessage());
            }
        }

        if(Common.sessionMap.containsKey(Common.GAME_FOUR_CODE)){
            try{
                Session session = Common.sessionMap.get(Common.GAME_FOUR_CODE);
                if(!session.isOpen()){
                    Common.sessionMap.remove(Common.GAME_FOUR_CODE);
                    session.close();
                }else{
                    session.getBasicRemote().sendText("ping");
                }
            }catch (Exception e){
                log.info("游戏four连接异常：{}",e.getMessage());
            }
        }

        if(Common.sessionMap.containsKey(Common.GAME_FIVE_CODE)){
            try{
                Session session = Common.sessionMap.get(Common.GAME_FIVE_CODE);
                if(!session.isOpen()){
                    Common.sessionMap.remove(Common.GAME_FIVE_CODE);
                    session.close();
                }else{
                    session.getBasicRemote().sendText("ping");
                }
            }catch (Exception e){
                log.info("游戏five连接异常：{}",e.getMessage());
            }
        }


        if(Common.sessionMap.containsKey(Common.GAME_SIX_CODE)){
            try {
                Session session = Common.sessionMap.get(Common.GAME_SIX_CODE);
                if(!session.isOpen()){
                    Common.sessionMap.remove(Common.GAME_SIX_CODE);
                    session.close();
                }else{
                    session.getBasicRemote().sendText("ping");
                }
            }catch (Exception e){
                log.info("游戏six连接异常：{}",e.getMessage());
            }
        }

        if(Common.sessionMap.containsKey(Common.GAME_SEVEN_CODE)){
            try{
                Session session = Common.sessionMap.get(Common.GAME_SEVEN_CODE);
                if(!session.isOpen()){
                    Common.sessionMap.remove(Common.GAME_SEVEN_CODE);
                    session.close();
                }else{
                    session.getBasicRemote().sendText("ping");
                }
            }catch (Exception e){
                log.info("游戏seven连接异常：{}",e.getMessage());
            }
        }

        if(Common.sessionMap.containsKey(Common.GAME_EIGHT_CODE)){
            try{
                Session session = Common.sessionMap.get(Common.GAME_EIGHT_CODE);
                if(!session.isOpen()){
                    Common.sessionMap.remove(Common.GAME_EIGHT_CODE);
                    session.close();
                }else{
                    session.getBasicRemote().sendText("ping");
                }
            }catch (Exception e){
                log.info("游戏eight连接异常：{}",e.getMessage());
            }
        }
    }
}
