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

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

Introduction

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

Prototype

void sendMessage(WebSocketMessage<?> message) throws IOException;

Source Link

Document

Send a WebSocket message: either TextMessage or BinaryMessage .

Usage

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();
    }
}