List of usage examples for org.springframework.web.socket WebSocketSession sendMessage
void sendMessage(WebSocketMessage<?> message) throws IOException;
From source file:cn.com.inhand.devicenetworks.ap.websocket.WSDNAccessPoint.java
/** * ?Inboxlogout/*from www. j av a2 s .com*/ * * @param logout */ private void onLogout(DNMessage logout, WebSocketSession session, WSDNSession wsdnsn) throws IOException, PacketException { if (logout.getType() != 0) { //logout wsdnsn.setAction(3); } else { //logout List list = new ArrayList(); int result = 100; try { result = Integer.parseInt(logout.getParameter("action").getValue()); } catch (Exception e) { } wsdnsn.setAction(result); list.add(new Parameter("result", "0")); list.add(new Parameter("reason", "" + wsdnsn.getAssetid() + "@" + wsdnsn.getLast_msg())); DNMessage ack = new DNMessage("logout", "response", logout.getTxid(), list); session.sendMessage(new TextMessage(new String(parser.wrap(ack)))); list.clear(); } // wsdnsn.setSession(session); // wsdnsn.setLast_msg(System.currentTimeMillis()); // //mapsession // this.cinfo.getWsdnsn_map().remove(session.toString()); // this.cinfo.getWssn_map().remove(wsdnsn.getId()); // wsdnsn.setIsLogin(false); // wsdnsn.setSession(null); }
From source file:org.kurento.tutorial.togglevideo.ToggleVideoHandler.java
private void processClientOffer(final WebSocketSession session, JsonObject jsonMessage) { try {/*from w w w.ja va 2s .co m*/ UserSession user = users.get(session.getId()); if (user == null) { log.info("Creating new user session for user"); MediaPipeline pipeline = kurento.createMediaPipeline(); user = new UserSession(); user.setMediaPipeline(pipeline); users.put(session.getId(), user); } WebRtcEndpoint webRtcEndpoint = new WebRtcEndpoint.Builder(user.getMediaPipeline()).build(); webRtcEndpoint.connect(webRtcEndpoint); user.setWebRtcEndpoint(webRtcEndpoint); // 3. SDP negotiation String sdpOffer = jsonMessage.get("sdpOffer").getAsString(); String sdpAnswer = user.getWebRtcEndpoint().processOffer(sdpOffer); JsonObject response = new JsonObject(); response.addProperty("id", "processClientOfferResponse"); response.addProperty("sdpAnswer", sdpAnswer); synchronized (session) { session.sendMessage(new TextMessage(response.toString())); } // 4. Gather ICE candidates user.getWebRtcEndpoint().addIceCandidateFoundListener(event -> { JsonObject candidateMsg = new JsonObject(); candidateMsg.addProperty("id", "iceCandidate"); candidateMsg.add("candidate", JsonUtils.toJsonObject(event.getCandidate())); try { synchronized (session) { session.sendMessage(new TextMessage(candidateMsg.toString())); } } catch (IOException e) { log.error(e.getMessage()); } }); user.getWebRtcEndpoint().gatherCandidates(); } catch (Throwable t) { sendError(session, t.getMessage()); } }
From source file:org.kurento.tutorial.pointerdetector.PointerDetectorHandler.java
private void start(final WebSocketSession session, JsonObject jsonMessage) { try {//from ww w .j ava 2 s . c o m // Media Logic (Media Pipeline and Elements) UserSession user = new UserSession(); MediaPipeline pipeline = kurento.createMediaPipeline(); user.setMediaPipeline(pipeline); WebRtcEndpoint webRtcEndpoint = new WebRtcEndpoint.Builder(pipeline).build(); user.setWebRtcEndpoint(webRtcEndpoint); users.put(session.getId(), user); webRtcEndpoint.addIceCandidateFoundListener(new EventListener<IceCandidateFoundEvent>() { @Override public void onEvent(IceCandidateFoundEvent event) { JsonObject response = new JsonObject(); response.addProperty("id", "iceCandidate"); response.add("candidate", JsonUtils.toJsonObject(event.getCandidate())); try { synchronized (session) { session.sendMessage(new TextMessage(response.toString())); } } catch (IOException e) { log.debug(e.getMessage()); } } }); pointerDetectorFilter = new PointerDetectorFilter.Builder(pipeline, new WindowParam(5, 5, 30, 30)) .build(); pointerDetectorFilter.addWindow(new PointerDetectorWindowMediaParam("window0", 50, 50, 500, 150)); pointerDetectorFilter.addWindow(new PointerDetectorWindowMediaParam("window1", 50, 50, 500, 250)); webRtcEndpoint.connect(pointerDetectorFilter); pointerDetectorFilter.connect(webRtcEndpoint); pointerDetectorFilter.addWindowInListener(new EventListener<WindowInEvent>() { @Override public void onEvent(WindowInEvent event) { JsonObject response = new JsonObject(); response.addProperty("id", "windowIn"); response.addProperty("roiId", event.getWindowId()); try { session.sendMessage(new TextMessage(response.toString())); } catch (Throwable t) { sendError(session, t.getMessage()); } } }); pointerDetectorFilter.addWindowOutListener(new EventListener<WindowOutEvent>() { @Override public void onEvent(WindowOutEvent event) { JsonObject response = new JsonObject(); response.addProperty("id", "windowOut"); response.addProperty("roiId", event.getWindowId()); try { session.sendMessage(new TextMessage(response.toString())); } catch (Throwable t) { sendError(session, t.getMessage()); } } }); // SDP negotiation (offer and answer) String sdpOffer = jsonMessage.get("sdpOffer").getAsString(); String sdpAnswer = webRtcEndpoint.processOffer(sdpOffer); // Sending response back to client JsonObject response = new JsonObject(); response.addProperty("id", "startResponse"); response.addProperty("sdpAnswer", sdpAnswer); synchronized (session) { session.sendMessage(new TextMessage(response.toString())); } webRtcEndpoint.gatherCandidates(); } catch (Throwable t) { sendError(session, t.getMessage()); } }
From source file:org.kurento.tutorial.crowddetector.CrowdDetectorHandler.java
private void start(final WebSocketSession session, JsonObject jsonMessage) { try {/*from w w w.j a va 2 s. com*/ // Media Logic (Media Pipeline and Elements) UserSession user = new UserSession(); MediaPipeline pipeline = kurento.createMediaPipeline(); user.setMediaPipeline(pipeline); WebRtcEndpoint webRtcEndpoint = new WebRtcEndpoint.Builder(pipeline).build(); user.setWebRtcEndpoint(webRtcEndpoint); users.put(session.getId(), user); webRtcEndpoint.addOnIceCandidateListener(new EventListener<OnIceCandidateEvent>() { @Override public void onEvent(OnIceCandidateEvent event) { JsonObject response = new JsonObject(); response.addProperty("id", "iceCandidate"); response.add("candidate", JsonUtils.toJsonObject(event.getCandidate())); try { synchronized (session) { session.sendMessage(new TextMessage(response.toString())); } } catch (IOException e) { log.debug(e.getMessage()); } } }); List<RegionOfInterest> rois = new ArrayList<>(); List<RelativePoint> points = new ArrayList<RelativePoint>(); points.add(new RelativePoint(0, 0)); points.add(new RelativePoint(0.5F, 0)); points.add(new RelativePoint(0.5F, 0.5F)); points.add(new RelativePoint(0, 0.5F)); RegionOfInterestConfig config = new RegionOfInterestConfig(); config.setFluidityLevelMin(10); config.setFluidityLevelMed(35); config.setFluidityLevelMax(65); config.setFluidityNumFramesToEvent(5); config.setOccupancyLevelMin(10); config.setOccupancyLevelMed(35); config.setOccupancyLevelMax(65); config.setOccupancyNumFramesToEvent(5); config.setSendOpticalFlowEvent(false); config.setOpticalFlowNumFramesToEvent(3); config.setOpticalFlowNumFramesToReset(3); config.setOpticalFlowAngleOffset(0); rois.add(new RegionOfInterest(points, config, "roi0")); CrowdDetectorFilter crowdDetectorFilter = new CrowdDetectorFilter.Builder(pipeline, rois).build(); webRtcEndpoint.connect(crowdDetectorFilter); crowdDetectorFilter.connect(webRtcEndpoint); // addEventListener to crowddetector crowdDetectorFilter.addCrowdDetectorDirectionListener(new EventListener<CrowdDetectorDirectionEvent>() { @Override public void onEvent(CrowdDetectorDirectionEvent event) { JsonObject response = new JsonObject(); response.addProperty("id", "directionEvent"); response.addProperty("roiId", event.getRoiID()); response.addProperty("angle", event.getDirectionAngle()); try { session.sendMessage(new TextMessage(response.toString())); } catch (Throwable t) { sendError(session, t.getMessage()); } } }); crowdDetectorFilter.addCrowdDetectorFluidityListener(new EventListener<CrowdDetectorFluidityEvent>() { @Override public void onEvent(CrowdDetectorFluidityEvent event) { JsonObject response = new JsonObject(); response.addProperty("id", "fluidityEvent"); response.addProperty("roiId", event.getRoiID()); response.addProperty("level", event.getFluidityLevel()); response.addProperty("percentage", event.getFluidityPercentage()); try { session.sendMessage(new TextMessage(response.toString())); } catch (Throwable t) { sendError(session, t.getMessage()); } } }); crowdDetectorFilter.addCrowdDetectorOccupancyListener(new EventListener<CrowdDetectorOccupancyEvent>() { @Override public void onEvent(CrowdDetectorOccupancyEvent event) { JsonObject response = new JsonObject(); response.addProperty("id", "occupancyEvent"); response.addProperty("roiId", event.getRoiID()); response.addProperty("level", event.getOccupancyLevel()); response.addProperty("percentage", event.getOccupancyPercentage()); try { session.sendMessage(new TextMessage(response.toString())); } catch (Throwable t) { sendError(session, t.getMessage()); } } }); // SDP negotiation (offer and answer) String sdpOffer = jsonMessage.get("sdpOffer").getAsString(); String sdpAnswer = webRtcEndpoint.processOffer(sdpOffer); // Sending response back to client JsonObject response = new JsonObject(); response.addProperty("id", "startResponse"); response.addProperty("sdpAnswer", sdpAnswer); synchronized (session) { session.sendMessage(new TextMessage(response.toString())); } webRtcEndpoint.gatherCandidates(); } catch (Throwable t) { sendError(session, t.getMessage()); } }
From source file:org.kurento.tutorial.frame_saver.FrameSaverHandler.java
private void start(final WebSocketSession aSession, JsonObject aJsonMsg) { try {//ww w . j a v a 2s. co m MediaPipeline new_pipeline = mClientKurento.createMediaPipeline(); WebRtcEndpoint new_endpoint = new WebRtcEndpoint.Builder(new_pipeline).build(); UserSession new_session = new UserSession(); new_session.setMediaPipeline(new_pipeline); new_session.setWebRtcEndpoint(new_endpoint); mSessionsMap.put(aSession.getId(), new_session); new_endpoint.addIceCandidateFoundListener(new EventListener<IceCandidateFoundEvent>() { @Override public void onEvent(IceCandidateFoundEvent event) { JsonObject response_obj = new JsonObject(); response_obj.addProperty("id", "iceCandidate"); response_obj.add("candidate", JsonUtils.toJsonObject(event.getCandidate())); String response_str = response_obj.toString(); try { synchronized (aSession) { aSession.sendMessage(new TextMessage(response_str)); } } catch (IOException ex) { mLogger.debug(ex.getMessage()); } } }); FrameSaverFilter frame_saver_filter = new FrameSaverFilter.Builder(new_pipeline).build(); new_endpoint.connect(frame_saver_filter); frame_saver_filter.connect(new_endpoint); frame_saver_filter.addFrameSaverListener(new EventListener<FrameSaverEvent>() { @Override public void onEvent(FrameSaverEvent event) { JsonObject response_obj = new JsonObject(); response_obj.addProperty("id", "TODO"); String response_str = response_obj.toString(); try { aSession.sendMessage(new TextMessage(response_str)); } catch (Throwable ex) { sendError(aSession, ex.getMessage()); } } }); // SDP negotiation (offer and answer) String sdp_offer = aJsonMsg.get("sdpOffer").getAsString(); String sdp_reply = new_endpoint.processOffer(sdp_offer); // Sending response back to client JsonObject response_obj = new JsonObject(); response_obj.addProperty("id", "startResponse"); response_obj.addProperty("sdpAnswer", sdp_reply); String response_str = response_obj.toString(); synchronized (aSession) { aSession.sendMessage(new TextMessage(response_str)); } new_endpoint.gatherCandidates(); } catch (Throwable ex) { sendError(aSession, ex.getMessage()); } }
From source file:dk.apaq.orderly.CallHandler.java
private synchronized void presenter(final WebSocketSession session, BroadcastMessage message) throws IOException { Authentication auth = (Authentication) session.getPrincipal(); auth = SecurityContextHolder.getContext().getAuthentication(); if (presenterUserSession == null) { presenterUserSession = new UserSession(session, objectMapper); pipeline = kurento.createMediaPipeline(); presenterUserSession.setWebRtcEndpoint(new WebRtcEndpoint.Builder(pipeline).build()); WebRtcEndpoint presenterWebRtc = presenterUserSession.getWebRtcEndpoint(); presenterWebRtc.addOnIceCandidateListener(new EventListener<OnIceCandidateEvent>() { @Override//w ww . j a va 2 s . co m public void onEvent(OnIceCandidateEvent event) { BroadcastMessageResponse response = new BroadcastMessageResponse( BroadcastMessageType.IceCandidate, dk.apaq.orderly.model.IceCandidate.fromOrg(event.getCandidate())); try { synchronized (session) { session.sendMessage(new TextMessage(objectMapper.writeValueAsString(response))); } } catch (IOException e) { log.debug(e.getMessage()); } } }); String sdpOffer = message.getSdpOffer(); String sdpAnswer = presenterWebRtc.processOffer(sdpOffer); BroadcastMessageResponse response = new BroadcastMessageResponse(BroadcastMessageType.PresenterResponse, BroadcastMessageResponseType.Accepted); response.setSdpAnswer(sdpAnswer); synchronized (session) { presenterUserSession.sendMessage(response); } presenterWebRtc.gatherCandidates(); } else { BroadcastMessageResponse response = new BroadcastMessageResponse(BroadcastMessageType.PresenterResponse, BroadcastMessageResponseType.Rejected, "Another user is currently acting as sender. Try again later ..."); session.sendMessage(new TextMessage(objectMapper.writeValueAsString(response))); } }
From source file:fi.vtt.nubomedia.kurento.Ar3DHandler.java
private void getStats(WebSocketSession session) { try {//from ww w. ja va 2s . co m Map<String, Stats> wr_stats = webRtcEndpoint.getStats(); //System.err.println("GET STATS..." + wr_stats); for (Stats s : wr_stats.values()) { //System.err.println("STATS:" + s); switch (s.getType()) { case endpoint: { //System.err.println("STATS endpoint"); EndpointStats end_stats = (EndpointStats) s; double e2eVideLatency = end_stats.getVideoE2ELatency() / 1000000; smart("***SMART E2E\t", e2eVideLatency); JsonObject response = new JsonObject(); response.addProperty("id", "videoE2Elatency"); response.addProperty("message", e2eVideLatency); synchronized (session) { session.sendMessage(new TextMessage(response.toString())); } } break; case inboundrtp: { RTCInboundRTPStreamStats stats = (RTCInboundRTPStreamStats) s; //System.err.println(stats.getJitter()); } break; case outboundrtp: { RTCOutboundRTPStreamStats stats = (RTCOutboundRTPStreamStats) s; // System.err.println(stats.getRoundTripTime()); // JsonObject response = new JsonObject(); // response.addProperty("id", "videoE2Elatency"); // response.addProperty("message", stats.getRoundTripTime()); // synchronized (session) { // session.sendMessage(new TextMessage(response.toString())); // } } break; default: //System.err.println("STATS DEFAULTS: " + s.getType() + "#" + s.getClass()); break; } } } catch (IOException e) { log.error("Exception sending message", e); } }
From source file:ch.rasc.wampspring.config.WampSubProtocolHandler.java
/** * Handle incoming WebSocket messages from clients. *//*from www . jav a 2 s . c o m*/ @Override public void handleMessageFromClient(WebSocketSession session, WebSocketMessage<?> webSocketMessage, MessageChannel outputChannel) { Assert.isInstanceOf(TextMessage.class, webSocketMessage); WampMessage wampMessage = null; try { wampMessage = WampMessage.fromJson(session, this.jsonFactory, ((TextMessage) webSocketMessage).getPayload()); } catch (Throwable ex) { if (logger.isErrorEnabled()) { logger.error("Failed to parse " + webSocketMessage + " in session " + session.getId() + ".", ex); } return; } try { WampSessionContextHolder.setAttributesFromMessage(wampMessage); outputChannel.send(wampMessage); } catch (Throwable ex) { logger.error("Failed to send client message to application via MessageChannel" + " in session " + session.getId() + ".", ex); if (wampMessage != null && wampMessage instanceof CallMessage) { CallErrorMessage callErrorMessage = new CallErrorMessage((CallMessage) wampMessage, "", ex.toString()); try { String json = callErrorMessage.toJson(this.jsonFactory); session.sendMessage(new TextMessage(json)); } catch (Throwable t) { // Could be part of normal workflow (e.g. browser tab closed) logger.debug("Failed to send error to client.", t); } } } finally { WampSessionContextHolder.resetAttributes(); } }
From source file:org.kurento.tutorial.player.PlayerHandler.java
private void start(final WebSocketSession session, JsonObject jsonMessage) { // 1. Media pipeline final UserSession user = new UserSession(); MediaPipeline pipeline = kurento.createMediaPipeline(); user.setMediaPipeline(pipeline);/*from w w w .j a v a 2 s .com*/ WebRtcEndpoint webRtcEndpoint = new WebRtcEndpoint.Builder(pipeline).build(); user.setWebRtcEndpoint(webRtcEndpoint); String videourl = jsonMessage.get("videourl").getAsString(); final PlayerEndpoint playerEndpoint = new PlayerEndpoint.Builder(pipeline, videourl).build(); user.setPlayerEndpoint(playerEndpoint); users.put(session.getId(), user); playerEndpoint.connect(webRtcEndpoint); // 2. WebRtcEndpoint // ICE candidates webRtcEndpoint.addIceCandidateFoundListener(new EventListener<IceCandidateFoundEvent>() { @Override public void onEvent(IceCandidateFoundEvent event) { JsonObject response = new JsonObject(); response.addProperty("id", "iceCandidate"); response.add("candidate", JsonUtils.toJsonObject(event.getCandidate())); try { synchronized (session) { session.sendMessage(new TextMessage(response.toString())); } } catch (IOException e) { log.debug(e.getMessage()); } } }); String sdpOffer = jsonMessage.get("sdpOffer").getAsString(); String sdpAnswer = webRtcEndpoint.processOffer(sdpOffer); JsonObject response = new JsonObject(); response.addProperty("id", "startResponse"); response.addProperty("sdpAnswer", sdpAnswer); sendMessage(session, response.toString()); webRtcEndpoint.addMediaStateChangedListener(new EventListener<MediaStateChangedEvent>() { @Override public void onEvent(MediaStateChangedEvent event) { if (event.getNewState() == MediaState.CONNECTED) { VideoInfo videoInfo = playerEndpoint.getVideoInfo(); JsonObject response = new JsonObject(); response.addProperty("id", "videoInfo"); response.addProperty("isSeekable", videoInfo.getIsSeekable()); response.addProperty("initSeekable", videoInfo.getSeekableInit()); response.addProperty("endSeekable", videoInfo.getSeekableEnd()); response.addProperty("videoDuration", videoInfo.getDuration()); sendMessage(session, response.toString()); } } }); webRtcEndpoint.gatherCandidates(); // 3. PlayEndpoint playerEndpoint.addErrorListener(new EventListener<ErrorEvent>() { @Override public void onEvent(ErrorEvent event) { log.info("ErrorEvent: {}", event.getDescription()); sendPlayEnd(session); } }); playerEndpoint.addEndOfStreamListener(new EventListener<EndOfStreamEvent>() { @Override public void onEvent(EndOfStreamEvent event) { log.info("EndOfStreamEvent: {}", event.getTimestamp()); sendPlayEnd(session); } }); playerEndpoint.play(); }
From source file:virnet.experiment.webSocket.hndler.MainSystemWebSocketHandler.java
public void releaseEquipment(WebSocketSession wss, JSONObject jsonString) { long start = System.currentTimeMillis(); String cabinet_NUM = MapEquipment.get(userMap.get(wss)); //? ResourceRelease resourceRelease = new ResourceRelease(cabinet_NUM); if (resourceRelease.release()) { System.out.println("??"); jsonString.put("success", true); } else {//from w w w . ja va 2 s .c om System.out.println("false!"); System.out.println(resourceRelease.getReturnDetail()); jsonString.put("success", false); } long end = System.currentTimeMillis(); System.out.println("?" + (end - start) + "ms"); String mess = jsonString.toString(); try { wss.sendMessage(new TextMessage(mess)); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }