Example usage for org.springframework.web.socket WebSocketSession isOpen

List of usage examples for org.springframework.web.socket WebSocketSession isOpen

Introduction

In this page you can find the example usage for org.springframework.web.socket WebSocketSession isOpen.

Prototype

boolean isOpen();

Source Link

Document

Return whether the connection is still open.

Usage

From source file:com.zb.app.websocket.server.WebSocketServerHandler.java

/**
 * ?WebSocketSession,Session/*from  w w w .  j  a  v a  2s.  c o m*/
 * 
 * @param session Session
 */
public void removeSession(WebSocketSession session) {
    SessionWrapper sw = getSessionInfo(session);
    if (sw == null || StringUtils.isEmpty(sw.getId())) {
        return;
    }
    ClientWrapper clientInfo = sw.getClientInfo();
    String sessionId = sw.getId();
    String ip = clientInfo.getIp();
    Long mId = clientInfo.getmId();
    try {
        session.close(CloseStatus.NORMAL);
        logger.error("WebSocketServerHandler removeSession() successfull! mid={},sessionId={},ip={}", mId,
                sessionId, ip);
    } catch (Exception e) {
        if (session != null && !session.isOpen()) {
            logger.error(
                    "WebSocketServerHandler removeSession() is Normally closed!  mid={},sessionId={},ip={}",
                    mId, sessionId, ip);
        } else {
            logger.error("WebSocketServerHandler removeSession() faild!  mid={},sessionId={},ip={}", mId,
                    sessionId, ip);
        }
    } finally {
        Set<SessionWrapper> set = sessionCacheMap.get(clientInfo);
        set.remove(sw);
        if (Argument.isEmpty(set)) {
            sessionCacheMap.remove(clientInfo);
        }
    }
}

From source file:virnet.experiment.webSocket.hndler.MainSystemWebSocketHandler.java

@Override
public void handleMessage(WebSocketSession wss, WebSocketMessage<?> wsm) throws Exception {
    String message = wsm.getPayload().toString();
    System.out.println("message:" + message);
    //json ?/*  www . j a  va  2s.  c o m*/
    JSONObject jsonString = JSONObject.fromObject(message);

    //??
    if (jsonString.getString("flag").equals("arrange")) {
        String arrangeStatus = jsonString.getString("arrangeStatus");

        if (arrangeStatus.equals("true")) {
            userGroupMap.put(wss, userGroupMapPro.get(wss)); //?map
            queueingLogic(1, jsonString); //
            //endPointQueueingLogic(4,3,jsonString)
        }
    }
    //????
    if (jsonString.getString("flag").equals("experiment")) {
        //???
        if (jsonString.getString("type").equals("requestEquipment")) {
            //Id?
            String expId = jsonString.getString("expId");
            CabinetTempletDeviceInfoCDAO ctdDAO = new CabinetTempletDeviceInfoCDAO();

            //?
            Integer equipmentNumber = ctdDAO.equipmentNumber(expId);

            //??##?????(RT##SW2##SW2#SW3#PC##PC)
            String name_Str = ctdDAO.equipment(expId);

            //
            TaskInfoCDAO tcDAO = new TaskInfoCDAO();
            Integer taskNum = tcDAO.taskNum(expId);

            jsonString.put("equipmentNumber", "" + equipmentNumber);
            jsonString.put("equipmentName", name_Str);
            jsonString.put("expTaskNum", "" + taskNum);
            String mess = jsonString.toString();
            wss.sendMessage(new TextMessage(mess));
        }

        //??
        if (jsonString.getString("experimentStatus").equals("start")) {
            JSONObject ss = jsonString;

            cc++;
            if (cc == 1) {
                /*??*/
                String cabinet_num = "";
                //??##?????(RT##SW2##SW2#SW3#PC##PC)
                String expId = jsonString.getString("expId");
                CabinetTempletDeviceInfoCDAO ctdDAO = new CabinetTempletDeviceInfoCDAO();
                String name_Str = ctdDAO.equipment(expId);
                String duration = "90"; //?(90)
                long start = System.currentTimeMillis();
                ResourceAllocate resourceAllocate = new ResourceAllocate(name_Str, duration);
                if (resourceAllocate.allocate()) {
                    cabinet_num = resourceAllocate.getCabinetNum(); //?
                    String num_str = resourceAllocate.getNumStr(); //??
                    String port_str = resourceAllocate.getPortInfoStr();//??????(1@2@3@4@5@6##1@2@3@4@6##1##1@2@3@4@5@6##1@2@3@4@5@6)
                    //experimentInit.setCabinet_num(cabinet_num);   //??*/

                    //??
                    jsonString.put("type", "sendEquipment");
                    jsonString.put("equipmentName", name_Str);
                    jsonString.put("equipmentNumStr", num_str);
                    jsonString.put("equipmentPortStr", port_str);
                    jsonString.put("cabinet_num", cabinet_num);
                    sendToGroup(wss, jsonString);
                    System.out.println("?" + cabinet_num);
                    System.out.println("??" + num_str);
                    //System.out.println(port_str);
                } else {
                    System.out.println("false!");
                    System.out.println(resourceAllocate.getReturnDetail());
                }
                long end = System.currentTimeMillis();
                System.out.println("??" + (end - start) + "ms");

                //?map
                MapEquipment.put(userMap.get(wss), cabinet_num);

                jsonString.put("experimentStatus", "");

                //??

                //??
                String leftNUM_Str = "";
                String rightNUM_Str = "";
                String leftport_Str = "";
                String rightport_Str = "";
                String position = "";

                //              String expId = jsonString.getString("expId");
                ExpTopoDAO tDAO = new ExpTopoDAO();
                String para[] = { "expId", expId, "expTaskOrder", "0" };
                ExpTopo topo = (ExpTopo) tDAO.getByNProperty(para);
                //??
                if (topo == null) {
                    //??
                    ExpTopoPositionCDAO tpDAO = new ExpTopoPositionCDAO();
                    //?????
                    position = tpDAO.defaultPosition(name_Str);
                    ss.put("position", position);
                    ss.put("type", "equipConnectionInfo");
                    String mess1 = ss.toString();
                    //???
                    wss.sendMessage(new TextMessage(mess1));

                }
                //?
                else {

                    //????Id
                    ExpTopoPositionCDAO tpDAO = new ExpTopoPositionCDAO();
                    position = tpDAO.position(topo.getExpTopoId());

                    ExpConnectCDAO ctDAO = new ExpConnectCDAO();
                    String connectInfo = ctDAO.connectInfo(topo.getExpTopoId());

                    String connect[] = connectInfo.split(",");
                    //
                    leftNUM_Str = connect[0];
                    //?
                    rightNUM_Str = connect[1];
                    //?
                    leftport_Str = connect[2];
                    //??
                    rightport_Str = connect[3];

                    ss.put("position", position);
                    ss.put("leftNUM_Str", leftNUM_Str);
                    ss.put("rightNUM_Str", rightNUM_Str);
                    ss.put("leftport_Str", leftport_Str);
                    ss.put("rightport_Str", rightport_Str);

                    ss.put("type", "equipConnectionInfo");
                    String mess1 = ss.toString();
                    wss.sendMessage(new TextMessage(mess1));
                }
            }
        }

        //Jtopu???
        if (jsonString.getString("type").equals("topoedit")) {

            JSONObject ss = jsonString;

            long start = System.currentTimeMillis();
            String cabinet_NUM = MapEquipment.get(userMap.get(wss)); //?       
            String leftNUM_Str = jsonString.getString("leftNUM_Str"); //??##?
            String rightNUM_Str = jsonString.getString("rightNUM_Str"); //???##?
            String leftport_Str = jsonString.getString("leftport_Str"); //???##?
            String rightport_Str = jsonString.getString("rightport_Str"); //????##?
            System.out.println("leftNUM_Str:" + leftNUM_Str + "----rightNUM_Str:" + rightNUM_Str
                    + "----leftport_Str:" + leftport_Str + "----rightport_Str:" + rightport_Str);
            NTCEdit ntcEdit = new NTCEdit(cabinet_NUM, leftNUM_Str, rightNUM_Str, leftport_Str, rightport_Str);
            if (ntcEdit.edit()) {
                String connection_str = leftNUM_Str + "%%" + rightNUM_Str + "%%" + leftNUM_Str + "%%"
                        + rightport_Str;
                System.out.println(connection_str);
                jsonString.put("success", true);
            } else {
                jsonString.put("success", false);
                System.out.println("false!");
                System.out.println(ntcEdit.getReturnDetail());
            }
            long end = System.currentTimeMillis();
            System.out.println("" + (end - start) + "ms");
            String mess1 = jsonString.toString();
            wss.sendMessage(new TextMessage(mess1));

            ss.put("type", "equipConnectionInfo");
            String mess2 = ss.toString();
            String groupid = userMap.get(wss);
            for (WebSocketSession user : expUsers) {
                try {
                    if (user.isOpen() && (userMap.get(user).equals(groupid)) && (!user.equals(wss))) {
                        System.out.println(user.equals(wss));
                        user.sendMessage(new TextMessage(mess2));
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        //??0?
        if (jsonString.getString("type").equals("topoSaveToDatabase")) {

            String leftNUM_Str = jsonString.getString("leftNUM_Str"); //??##?
            String rightNUM_Str = jsonString.getString("rightNUM_Str"); //???##?
            String leftport_Str = jsonString.getString("leftport_Str"); //???##?
            String rightport_Str = jsonString.getString("rightport_Str"); //????##?
            String position = jsonString.getString("position"); //? XY???
            String expId = jsonString.getString("expId");
            String expTaskOrder = jsonString.getString("expTaskOrder");
            String expCaseId = jsonString.getString("expCaseId");
            String expRole = jsonString.getString("expRole");

            //?
            if (expRole.equals("stu")) {

                //
                ResultTaskCDAO taskcDAO = new ResultTaskCDAO();
                Integer resultTaskId = taskcDAO.getResultTaskId(expCaseId, expId, expTaskOrder);

                if (resultTaskId != 0) {
                    ResultTopoCDAO rtcDAO = new ResultTopoCDAO();
                    Integer resultTopoId = rtcDAO.edit(resultTaskId, leftNUM_Str);

                    if (resultTopoId != 0) {

                        //
                        ResultConnectCDAO rcCDAO = new ResultConnectCDAO();
                        boolean connectSuccess = rcCDAO.edit(resultTopoId, leftNUM_Str, rightNUM_Str,
                                leftport_Str, rightport_Str);

                        //?
                        ResultTopoPositionCDAO rtpcDAO = new ResultTopoPositionCDAO();
                        boolean positionSuccess = rtpcDAO.edit(resultTopoId, position);

                        if (connectSuccess && positionSuccess)
                            jsonString.put("success", true);
                        else
                            jsonString.put("success", false);
                    } else
                        jsonString.put("success", false);
                } else
                    jsonString.put("success", false);
            }

            //???
            else if (expRole.equals("GM")) {

                //?
                ExpTopoCDAO tcDAO = new ExpTopoCDAO();
                Integer ExpTopoId = tcDAO.edit(expId, expTaskOrder, leftNUM_Str);
                if (ExpTopoId != 0) {
                    //?
                    ExpConnectCDAO cCDAO = new ExpConnectCDAO();
                    boolean connectSuccess = cCDAO.edit(ExpTopoId, leftNUM_Str, rightNUM_Str, leftport_Str,
                            rightport_Str);

                    //??
                    ExpTopoPositionCDAO tpCDAO = new ExpTopoPositionCDAO();
                    boolean positionSuccess = tpCDAO.edit(ExpTopoId, position);

                    if (connectSuccess && positionSuccess)
                        jsonString.put("success", true);
                    else
                        jsonString.put("success", false);
                } else {
                    System.out.println("false");
                    jsonString.put("success", false);
                }
            } else
                jsonString.put("success", false);

            String mess = jsonString.toString();
            //???
            wss.sendMessage(new TextMessage(mess));
        }

        //?
        if (jsonString.getString("type").equals("command")) {
            JSONObject ss = jsonString;
            String equipmentNumber = jsonString.getString("inputEquipmentNumber");
            String commandDetail = jsonString.getString("content");
            String[] sourceStrArray = jsonString.getString("equipmentName").split("##");
            if (sourceStrArray[Integer.parseInt(jsonString.getString("inputEquipmentNumber"))].equals("PC")) {

                String groupid = userMap.get(wss);
                ss.put("content", "Administrator:/>" + commandDetail + "\n");
                String mess1 = ss.toString();
                for (WebSocketSession user : expUsers) {
                    try {
                        if (user.isOpen() && (userMap.get(user).equals(groupid))) {
                            user.sendMessage(new TextMessage(mess1));
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                pcCommandConfigure(equipmentNumber, commandDetail, wss);
            } else {
                FacilityCommandConfigure(equipmentNumber, commandDetail, wss);
            }
        }

        //???
        if (jsonString.getString("type").equals("communication")) {
            String groupid = userMap.get(wss);
            String mess = jsonString.toString();
            for (WebSocketSession user : expUsers) {
                try {
                    if (user.isOpen() && (userMap.get(user).equals(groupid))) {
                        user.sendMessage(new TextMessage(mess));
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        //?
        if (jsonString.getString("type").equals("lock")) {
            String[] sourceStrArray = jsonString.getString("equipmentName").split("##");
            if (sourceStrArray[Integer.parseInt(jsonString.getString("inputEquipmentNumber"))].equals("PC")) {
                if (jsonString.getString("lock").equals("lock")) {
                    pcInitial(jsonString.getString("inputEquipmentNumber"), wss, jsonString);
                }
                if (jsonString.getString("lock").equals("unlock")) {
                    pcCancel(jsonString.getString("inputEquipmentNumber"), wss, jsonString);
                }
            } else {
                if (jsonString.getString("lock").equals("lock")) {
                    FacilityInitial(jsonString.getString("inputEquipmentNumber"), wss, jsonString);
                }
                if (jsonString.getString("lock").equals("unlock")) {
                    FacilityCancel(jsonString.getString("inputEquipmentNumber"), wss, jsonString);
                }
            }
            String groupid = userMap.get(wss);
            String mess = jsonString.toString();
            for (WebSocketSession user : expUsers) {
                try {
                    if (user.isOpen() && (userMap.get(user).equals(groupid) && (!user.equals(wss)))) {
                        user.sendMessage(new TextMessage(mess));
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        //??
        if (jsonString.getString("type").equals("saveConfigureFile")) {
            String cabinet_num = jsonString.getString("cabinet_num");
            String expId = jsonString.getString("expId");
            String expTaskOrder = jsonString.getString("expTaskOrder");
            String equipmentNumber = jsonString.getString("equipmentNumber");
            String expRole = jsonString.getString("expRole");

            boolean success = false;
            //?
            if (expRole.equals("stu")) {

                String expCaseId = jsonString.getString("expCaseId");
                ResultTaskCDAO taskcDAO = new ResultTaskCDAO();
                Integer resultTaskId = taskcDAO.getResultTaskId(expCaseId, expId, expTaskOrder);

                ExperimentSave es = new ExperimentSave(cabinet_num, expId, expTaskOrder, equipmentNumber,
                        expRole, resultTaskId);
                success = es.save();

            }
            //??
            else if (expRole.equals("GM")) {

                //??????
                ExperimentSave es = new ExperimentSave(cabinet_num, expId, expTaskOrder, equipmentNumber,
                        expRole, 0);
                success = es.save();
            } else {
                success = false;
            }

            jsonString.put("success", success);
            String mess = jsonString.toString();
            //???
            wss.sendMessage(new TextMessage(mess));
        }
        //ping?
        if (jsonString.getString("type").equals("pingVerify")) {

            boolean success = true;

            String cabinet_num = jsonString.getString("cabinet_num");
            String expId = jsonString.getString("expId");
            String expTaskOrder = jsonString.getString("expTaskOrder");
            String equipmentNumber = jsonString.getString("equipmentNumber");

            String leftNUM_Str = jsonString.getString("leftNUM_Str"); //??##?
            String rightNUM_Str = jsonString.getString("rightNUM_Str"); //???##?
            String leftport_Str = jsonString.getString("leftport_Str"); //???##?
            String rightport_Str = jsonString.getString("rightport_Str"); //????##?

            String expRole = jsonString.getString("expRole");

            //???ip?
            PCConfigureInfo pcInfo = new PCConfigureInfo(cabinet_num, Integer.parseInt(equipmentNumber));
            //??
            String[] pcip = pcInfo.getIpAddress();
            if (pcip[0].equals("fail"))
                //??
                success = false;
            else {
                //?
                PingVerify pv = new PingVerify(cabinet_num, Integer.parseInt(equipmentNumber));
                String verifyResult[] = pv.getVerifyResult(pcip);

                if (verifyResult[0].equals("fail"))
                    //?
                    success = false;
                else {

                    Integer VerifyId = 0;

                    if (expRole.equals("GM")) { //?
                        //??
                        ExpVerifyCDAO vcDAO = new ExpVerifyCDAO();
                        VerifyId = vcDAO.edit(expId, expTaskOrder);

                        if (VerifyId == 0)
                            //?
                            success = false;
                        else {
                            //?ping?
                            ExpVerifyPingCDAO vpCDAO = new ExpVerifyPingCDAO();
                            vpCDAO.delete(VerifyId);

                            boolean write = vpCDAO.edit(VerifyId, equipmentNumber, pcip, verifyResult,
                                    leftNUM_Str, rightNUM_Str, leftport_Str, rightport_Str);
                            if (write)
                                success = true;
                            else
                                success = false;
                        }
                    }

                    else if (expRole.equals("stu")) { //

                        //?ID
                        String expCaseId = jsonString.getString("expCaseId");
                        ResultTaskCDAO taskcDAO = new ResultTaskCDAO();
                        Integer resultTaskId = taskcDAO.getResultTaskId(expCaseId, expId, expTaskOrder);

                        //?
                        ResultVerifyCDAO rvcDAO = new ResultVerifyCDAO();
                        VerifyId = rvcDAO.edit(resultTaskId);

                        if (VerifyId == 0)
                            //?
                            success = false;
                        else {
                            //?ping?
                            ResultVerifyPingCDAO rvpCDAO = new ResultVerifyPingCDAO();
                            rvpCDAO.delete(VerifyId);

                            boolean write = rvpCDAO.edit(VerifyId, equipmentNumber, pcip, verifyResult,
                                    leftNUM_Str, rightNUM_Str, leftport_Str, rightport_Str);
                            if (write)
                                success = true;
                            else
                                success = false;
                        }
                    } else
                        success = false;

                }
            }
            jsonString.put("success", success);
            String mess = jsonString.toString();
            //???
            wss.sendMessage(new TextMessage(mess));
        }
        //?
        if (jsonString.getString("type").equals("release")) {
            releaseEquipment(wss, jsonString);
        }
    }

}

From source file:org.kurento.jsonrpc.internal.ws.JsonRpcWebSocketHandler.java

@Override
public void handleTextMessage(final WebSocketSession wsSession, TextMessage message) throws Exception {

    try {/*from www .j  a  v  a  2s  .  c  o  m*/

        String messageJson = message.getPayload();

        // TODO Ensure only one register message per websocket session.
        ServerSessionFactory factory = new ServerSessionFactory() {
            @Override
            public ServerSession createSession(String sessionId, Object registerInfo,
                    SessionsManager sessionsManager) {
                return new WebSocketServerSession(sessionId, registerInfo, sessionsManager, wsSession);
            }

            @Override
            public void updateSessionOnReconnection(ServerSession session) {
                ((WebSocketServerSession) session).updateWebSocketSession(wsSession);
            }
        };

        protocolManager.processMessage(messageJson, factory, new ResponseSender() {
            @Override
            public void sendResponse(Message message) throws IOException {

                String jsonMessage = message.toString();
                log.debug("{} <-Res {}", label, jsonMessage);
                sendJsonMessage(jsonMessage);
            }

            @Override
            public void sendPingResponse(Message message) throws IOException {

                String jsonMessage = message.toString();
                log.trace("{} <-Res {}", label, jsonMessage);
                sendJsonMessage(jsonMessage);
            }

            private void sendJsonMessage(String jsonMessage) throws IOException {
                synchronized (wsSession) {
                    if (wsSession.isOpen()) {
                        wsSession.sendMessage(new TextMessage(jsonMessage));
                    } else {
                        log.error("Trying to send a message to a closed session");
                    }
                }
            }
        }, wsSession.getId());

    } catch (Exception e) {
        log.error(label + "Exception processing request", e);
    }

}

From source file:org.springframework.web.socket.handler.ExceptionWebSocketHandlerDecorator.java

public static void tryCloseWithError(WebSocketSession session, Throwable exception, Log logger) {
    if (logger.isErrorEnabled()) {
        logger.error("Closing session due to exception for " + session, exception);
    }/*from  w w w  . jav  a 2s  . c  om*/
    if (session.isOpen()) {
        try {
            session.close(CloseStatus.SERVER_ERROR);
        } catch (Throwable ex) {
            // ignore
        }
    }
}

From source file:org.springframework.web.socket.messaging.SubProtocolWebSocketHandler.java

@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
    // WebSocketHandlerDecorator could close the session
    if (!session.isOpen()) {
        return;//from  w ww  .  j  a  v  a 2  s . c o m
    }
    this.stats.incrementSessionCount(session);
    session = decorateSession(session);
    this.sessions.put(session.getId(), new WebSocketSessionHolder(session));
    findProtocolHandler(session).afterSessionStarted(session, this.clientInboundChannel);
}

From source file:org.springframework.web.socket.support.ExceptionWebSocketHandlerDecorator.java

public static void tryCloseWithError(WebSocketSession session, Throwable exception, Log logger) {
    logger.error("Closing due to exception for " + session, exception);
    if (session.isOpen()) {
        try {//  ww w  . j a  va 2s  . c  o m
            session.close(CloseStatus.SERVER_ERROR);
        } catch (Throwable t) {
            // ignore
        }
    }
}