Example usage for org.springframework.web.socket TextMessage TextMessage

List of usage examples for org.springframework.web.socket TextMessage TextMessage

Introduction

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

Prototype

public TextMessage(byte[] payload) 

Source Link

Document

Create a new text WebSocket message from the given byte[].

Usage

From source file:org.kurento.tutorial.frame_saver.FrameSaverHandler.java

private void start(final WebSocketSession aSession, JsonObject aJsonMsg) {
    try {// w w w.  jav a 2 s. c om
        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:es.urjc.etsii.code.UserSession.java

public void initViewer(UserSession presenterSession, JsonObject jsonMessage) throws InterruptedException {
    String processing = jsonMessage.get("processing").getAsString();
    String sdpOffer = jsonMessage.getAsJsonPrimitive("sdpOffer").getAsString();
    int fakeClients = jsonMessage.getAsJsonPrimitive("fakeClients").getAsInt();
    WebRtcEndpoint inputWebRtcEndpoint = singleKmsTopology(presenterSession, processing);

    String sdpAnswer = webRtcEndpoint.processOffer(sdpOffer);
    JsonObject response = new JsonObject();
    response.addProperty("id", "viewerResponse");
    response.addProperty("response", "accepted");
    response.addProperty("sdpAnswer", sdpAnswer);

    handler.sendMessage(wsSession, sessionNumber, new TextMessage(response.toString()));
    webRtcEndpoint.gatherCandidates();//from w  w w .  jav  a  2s. c o m

    if (fakeClients > 0) {
        addFakeClients(presenterSession, jsonMessage, inputWebRtcEndpoint);
    }

}

From source file:ch.rasc.wampspring.pubsub.PubSubTest.java

@Test
public void testPublishToMethod()
        throws InterruptedException, ExecutionException, IOException, TimeoutException {

    CompletableFutureWebSocketHandler result = new CompletableFutureWebSocketHandler(this.jsonFactory);
    try (WebSocketSession webSocketSession = startWebSocketSession(result)) {

        SubscribeMessage subscribeMsg = new SubscribeMessage("resultTopic");
        webSocketSession.sendMessage(new TextMessage(subscribeMsg.toJson(this.jsonFactory)));

        PublishMessage pm = new PublishMessage("sumTopic", Arrays.asList(1, 2, 3, 4));
        webSocketSession.sendMessage(new TextMessage(pm.toJson(this.jsonFactory)));

        EventMessage event = (EventMessage) result.getWampMessage();
        assertThat(event.getTopicURI()).isEqualTo("resultTopic");
        assertThat(event.getEvent()).isEqualTo(10);
    }//w w w  . j  ava2 s .  c o m
}

From source file:ch.rasc.wampspring.config.WampSubProtocolHandler.java

@Override
public void afterSessionStarted(WebSocketSession session, MessageChannel outputChannel) {
    if (session.getTextMessageSizeLimit() < MINIMUM_WEBSOCKET_MESSAGE_SIZE) {
        session.setTextMessageSizeLimit(MINIMUM_WEBSOCKET_MESSAGE_SIZE);
    }/*  w  w w.j  av a 2  s.c o m*/

    WelcomeMessage welcomeMessage = new WelcomeMessage(session.getId(), SERVER_IDENTIFIER);
    try {
        session.sendMessage(new TextMessage(welcomeMessage.toJson(this.jsonFactory)));
    } catch (IOException e) {
        logger.error("Failed to send welcome message to client in session " + session.getId() + ".", e);
    }
}

From source file:ch.rasc.wampspring.pubsub.PubSubReplyAnnotationTest.java

@Test
public void testPublish4() throws InterruptedException, ExecutionException, IOException, TimeoutException {
    CompletableFutureWebSocketHandler result = new CompletableFutureWebSocketHandler(3, this.jsonFactory);
    try (WebSocketSession webSocketSession = startWebSocketSession(result)) {

        webSocketSession//from  w  ww .  j a v a 2 s . c om
                .sendMessage(new TextMessage(new SubscribeMessage("replyTo4_1").toJson(this.jsonFactory)));
        webSocketSession
                .sendMessage(new TextMessage(new SubscribeMessage("replyTo4_2").toJson(this.jsonFactory)));
        webSocketSession
                .sendMessage(new TextMessage(new SubscribeMessage("replyTo4_3").toJson(this.jsonFactory)));

        PublishMessage pm = new PublishMessage("incomingPublish4", "testPublish4");
        webSocketSession.sendMessage(new TextMessage(pm.toJson(this.jsonFactory)));

        List<WampMessage> resultList = result.getWampMessages();

        for (int i = 0; i < resultList.size(); i++) {
            EventMessage eventMessage = (EventMessage) resultList.get(i);
            assertThat(eventMessage.getTopicURI()).isEqualTo("replyTo4_" + (i + 1));
            assertThat(eventMessage.getEvent()).isEqualTo("return4:testPublish4");
        }
    }
}

From source file:org.kurento.tutorial.player.PlayerFrameSaverHandler.java

private void start(final WebSocketSession session, JsonObject jsonMessage) {

    String videourl = jsonMessage.get("videourl").getAsString();
    log.info("Video-URL is {} --- Session-ID is {}", videourl, session.getId());

    // create the Media pipeline --- no video source or sink yet, but initial state is PLAYING
    mPipeline = kurento.createMediaPipeline();

    // add FrameSaverVideoFilter to pipeline --- pipeline state changes from PLAYING to READY  
    mFrameSaverProxy = FrameSaverPluginProxy.newInstance(mPipeline);

    // add to pipeline two Media Elements (WebRtcEndpoint, PlayerEndpoint)
    mWebRtc = new WebRtcEndpoint.Builder(mPipeline).build();
    mPlayer = new PlayerEndpoint.Builder(mPipeline, videourl).build();

    // Create and Update User Session
    UserSession user = new UserSession();
    user.setMediaPipeline(mPipeline);//  w  w w. j a va 2 s.  c om
    user.setWebRtcEndpoint(mWebRtc);
    user.setPlayerEndpoint(mPlayer);
    users.put(session.getId(), user);

    // Connect The Elements
    mPlayer.connect(mWebRtc);

    // Configure The WebRtcEndpoint --- add ICE-candidate-Found-Listener
    mWebRtc.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 = mWebRtc.processOffer(sdpOffer);

    JsonObject response = new JsonObject();
    response.addProperty("id", "startResponse");
    response.addProperty("sdpAnswer", sdpAnswer);
    sendMessage(session, response.toString());

    // Configure The WebRtcEndpoint --- add Media-State-Change-Listener
    mWebRtc.addMediaStateChangedListener(new EventListener<MediaStateChangedEvent>() {
        @Override
        public void onEvent(MediaStateChangedEvent event) {

            if (event.getNewState() == MediaState.CONNECTED) {
                VideoInfo videoInfo = mPlayer.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());
            }
        }
    });

    mWebRtc.gatherCandidates();

    // Configure The PlayEndpoint --- add Error-Listener
    mPlayer.addErrorListener(new EventListener<ErrorEvent>() {
        @Override
        public void onEvent(ErrorEvent event) {
            log.info("ErrorEvent: {}", event.getDescription());
            sendPlayEnd(session);
        }
    });

    // Configure The PlayEndpoint --- add End-Of-Stream-Listener
    mPlayer.addEndOfStreamListener(new EventListener<EndOfStreamEvent>() {
        @Override
        public void onEvent(EndOfStreamEvent event) {
            log.info("EndOfStreamEvent: {}", event.getTimestamp());
            sendPlayEnd(session);
        }
    });

    if (mFrameSaverProxy != null) {
        mFrameSaverProxy.setParams(mFrameSaverParams);

        mFrameSaverProxy.setElementsToSplice(mPlayer.getName(), mWebRtc.getName());

        mFrameSaverProxy.setElementsToSplice(mPlayer.getName(), mWebRtc.getName());

        //? mFrameSaverProxy.startPlaying();    // possibly not needed
    }

    // Activate The PlayEndpoint --- start playing
    mPlayer.play();
}

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//from w w  w .  j a  va 2  s  .  com
            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:com.visual_tools.nubomedia.nuboEarJava.NuboEarJavaHandler.java

private void notEnoughResources(WebSocketSession session) {
    // 1. Send notEnoughResources message to client
    JsonObject response = new JsonObject();
    response.addProperty("id", "notEnoughResources");
    sendMessage(session, new TextMessage(response.toString()));

    // 2. Release media session
    release(session);//from  w w w.ja  v  a 2s  .  co  m
}

From source file:org.kurento.tutorial.one2manycall.CallHandler.java

private synchronized void viewer(final WebSocketSession session, JsonObject jsonMessage) throws IOException {
    if (presenterUserSession == null || presenterUserSession.getWebRtcEndpoint() == null) {
        JsonObject response = new JsonObject();
        response.addProperty("id", "viewerResponse");
        response.addProperty("response", "rejected");
        response.addProperty("message", "No active sender now. Become sender or . Try again later ...");
        session.sendMessage(new TextMessage(response.toString()));
    } else {//w  ww  .  ja v  a2  s . c  om
        if (viewers.containsKey(session.getId())) {
            JsonObject response = new JsonObject();
            response.addProperty("id", "viewerResponse");
            response.addProperty("response", "rejected");
            response.addProperty("message", "You are already viewing in this session. "
                    + "Use a different browser to add additional viewers.");
            session.sendMessage(new TextMessage(response.toString()));
            return;
        }
        UserSession viewer = new UserSession(session);
        viewers.put(session.getId(), viewer);

        WebRtcEndpoint nextWebRtc = new WebRtcEndpoint.Builder(pipeline).build();

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

        viewer.setWebRtcEndpoint(nextWebRtc);
        presenterUserSession.getWebRtcEndpoint().connect(nextWebRtc);
        String sdpOffer = jsonMessage.getAsJsonPrimitive("sdpOffer").getAsString();
        String sdpAnswer = nextWebRtc.processOffer(sdpOffer);

        JsonObject response = new JsonObject();
        response.addProperty("id", "viewerResponse");
        response.addProperty("response", "accepted");
        response.addProperty("sdpAnswer", sdpAnswer);

        synchronized (session) {
            viewer.sendMessage(response);
        }
        nextWebRtc.gatherCandidates();
    }
}

From source file:org.kurento.tutorial.one2onecallrec.CallHandler.java

private void incomingCallResponse(final UserSession callee, JsonObject jsonMessage) throws IOException {
    String callResponse = jsonMessage.get("callResponse").getAsString();
    String from = jsonMessage.get("from").getAsString();
    final UserSession calleer = registry.getByName(from);
    String to = calleer.getCallingTo();

    if ("accept".equals(callResponse)) {
        log.debug("Accepted call from '{}' to '{}'", from, to);

        CallMediaPipeline callMediaPipeline = new CallMediaPipeline(kurento, from, to);
        pipelines.put(calleer.getSessionId(), callMediaPipeline.getPipeline());
        pipelines.put(callee.getSessionId(), callMediaPipeline.getPipeline());

        callee.setWebRtcEndpoint(callMediaPipeline.getCalleeWebRtcEp());
        callMediaPipeline.getCalleeWebRtcEp()
                .addIceCandidateFoundListener(new EventListener<IceCandidateFoundEvent>() {

                    @Override//from  w  w w  .  j  av a2 s .  co m
                    public void onEvent(IceCandidateFoundEvent event) {
                        JsonObject response = new JsonObject();
                        response.addProperty("id", "iceCandidate");
                        response.add("candidate", JsonUtils.toJsonObject(event.getCandidate()));
                        try {
                            synchronized (callee.getSession()) {
                                callee.getSession().sendMessage(new TextMessage(response.toString()));
                            }
                        } catch (IOException e) {
                            log.debug(e.getMessage());
                        }
                    }
                });

        String calleeSdpOffer = jsonMessage.get("sdpOffer").getAsString();
        String calleeSdpAnswer = callMediaPipeline.generateSdpAnswerForCallee(calleeSdpOffer);
        JsonObject startCommunication = new JsonObject();
        startCommunication.addProperty("id", "startCommunication");
        startCommunication.addProperty("sdpAnswer", calleeSdpAnswer);

        synchronized (callee) {
            callee.sendMessage(startCommunication);
        }

        callMediaPipeline.getCalleeWebRtcEp().gatherCandidates();

        String callerSdpOffer = registry.getByName(from).getSdpOffer();

        calleer.setWebRtcEndpoint(callMediaPipeline.getCallerWebRtcEp());
        callMediaPipeline.getCallerWebRtcEp()
                .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 (calleer.getSession()) {
                                calleer.getSession().sendMessage(new TextMessage(response.toString()));
                            }
                        } catch (IOException e) {
                            log.debug(e.getMessage());
                        }
                    }
                });

        String callerSdpAnswer = callMediaPipeline.generateSdpAnswerForCaller(callerSdpOffer);

        JsonObject response = new JsonObject();
        response.addProperty("id", "callResponse");
        response.addProperty("response", "accepted");
        response.addProperty("sdpAnswer", callerSdpAnswer);

        synchronized (calleer) {
            calleer.sendMessage(response);
        }

        callMediaPipeline.getCallerWebRtcEp().gatherCandidates();

        callMediaPipeline.record();

    } else {
        JsonObject response = new JsonObject();
        response.addProperty("id", "callResponse");
        response.addProperty("response", "rejected");
        calleer.sendMessage(response);
    }
}