List of usage examples for org.springframework.web.socket WebSocketSession isOpen
boolean isOpen();
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 } } }