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:com.music.websocket.GameTest.java

private TextMessage getTextMessage(GameMessage msg) {
    String payload;//from  w  w  w. j  a v a2s .  c om
    try {
        payload = mapper.writeValueAsString(msg);
    } catch (JsonProcessingException e) {
        throw new IllegalStateException(e);
    }
    TextMessage message = new TextMessage(payload);
    return message;
}

From source file:org.kurento.tutorial.pointerdetector.PointerDetectorHandler.java

private void start(final WebSocketSession session, JsonObject jsonMessage) {
    try {//from w w  w.  j a va2 s .co  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.demo.CrowdDetectorHandler.java

private static void sendError(WebSocketSession session, String message) {
    try {/*from www .  j  a v  a  2s .  c  om*/
        JsonObject response = new JsonObject();
        response.addProperty("id", "error");
        response.addProperty("message", message);
        session.sendMessage(new TextMessage(response.toString()));
    } catch (IOException e) {
        log.error("Exception sending message", e);
    }
}

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

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

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

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

        EventMessage event = (EventMessage) result.getWampMessage();
        assertThat(event.getTopicURI()).isEqualTo("secondTopic");
        assertThat(event.getEvent()).isEqualTo("a simple message");

    }/*w w  w.  j a  v a  2 s .  co m*/
}

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  ww w.  j  a  va2 s . co m*/
    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:ch.rasc.wampspring.pubsub.PubSubReplyAnnotationTest.java

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

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

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

        EventMessage event = (EventMessage) result.getWampMessage();
        assertThat(event.getTopicURI()).isEqualTo("replyTo3");
        assertThat(event.getEvent()).isEqualTo("return3:testPublish3");

    }//from  w w w .j a  v a  2  s .c  o m
}

From source file:com.devicehive.websockets.AbstractWebSocketHandler.java

@Override
public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
    logger.error("Error in session " + session.getId(), exception);
    JsonMessageBuilder builder;/*  w  ww.jav a 2  s .  c om*/

    session = sessionMonitor.getSession(session.getId());

    if (exception instanceof JsonParseException) {
        builder = JsonMessageBuilder.createErrorResponseBuilder(HttpServletResponse.SC_BAD_REQUEST,
                "Incorrect JSON syntax");
    } else {
        builder = JsonMessageBuilder.createErrorResponseBuilder(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
                "Internal server error");
    }
    session.sendMessage(new TextMessage(GsonFactory.createGson().toJson(builder.build())));
}

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

private synchronized void presenter(final WebSocketSession session, JsonObject jsonMessage) throws IOException {
    if (presenterUserSession == null) {
        presenterUserSession = new UserSession(session);

        pipeline = kurento.createMediaPipeline();
        presenterUserSession.setWebRtcEndpoint(new WebRtcEndpoint.Builder(pipeline).build());

        WebRtcEndpoint presenterWebRtc = presenterUserSession.getWebRtcEndpoint();

        presenterWebRtc.addIceCandidateFoundListener(new EventListener<IceCandidateFoundEvent>() {

            @Override/*from  w ww.j  av a2s . c  o  m*/
            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.getAsJsonPrimitive("sdpOffer").getAsString();
        String sdpAnswer = presenterWebRtc.processOffer(sdpOffer);

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

        synchronized (session) {
            presenterUserSession.sendMessage(response);
        }
        presenterWebRtc.gatherCandidates();

    } else {
        JsonObject response = new JsonObject();
        response.addProperty("id", "presenterResponse");
        response.addProperty("response", "rejected");
        response.addProperty("message", "Another user is currently acting as sender. Try again later ...");
        session.sendMessage(new TextMessage(response.toString()));
    }
}

From source file:org.kurento.tutorial.senddatachannel.SendDataChannelHandler.java

private void start(final WebSocketSession session, JsonObject jsonMessage) {
    try {/*from   w  w w. j  a  v  a2s.c o m*/
        // User session
        UserSession user = new UserSession();
        MediaPipeline pipeline = kurento.createMediaPipeline();
        user.setMediaPipeline(pipeline);
        WebRtcEndpoint webRtcEndpoint = new WebRtcEndpoint.Builder(pipeline).useDataChannels().build();
        user.setWebRtcEndpoint(webRtcEndpoint);
        PlayerEndpoint player = new PlayerEndpoint.Builder(pipeline,
                "http://files.kurento.org/video/filter/barcodes.webm").build();
        user.setPlayer(player);
        users.put(session.getId(), user);

        player.addErrorListener(new EventListener<ErrorEvent>() {
            @Override
            public void onEvent(ErrorEvent event) {
                log.info("ErrorEvent: {}", event.getDescription());
                sendPlayEnd(session);
            }
        });

        player.addEndOfStreamListener(new EventListener<EndOfStreamEvent>() {
            @Override
            public void onEvent(EndOfStreamEvent event) {
                log.info("EndOfStreamEvent: {}", event.getTimestamp());
                sendPlayEnd(session);
            }
        });

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

        // Media logic
        KmsSendData kmsSendData = new KmsSendData.Builder(pipeline).build();

        player.connect(kmsSendData);
        kmsSendData.connect(webRtcEndpoint);

        // SDP negotiation (offer and answer)
        String sdpOffer = jsonMessage.get("sdpOffer").getAsString();
        String sdpAnswer = webRtcEndpoint.processOffer(sdpOffer);

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

        synchronized (session) {
            session.sendMessage(new TextMessage(response.toString()));
        }

        webRtcEndpoint.gatherCandidates();
        player.play();

    } catch (Throwable t) {
        sendError(session, t.getMessage());
    }
}

From source file:org.kurento.tutorial.groupcall.UserSession.java

private WebRtcEndpoint getEndpointForUser(final UserSession sender) {
    if (sender.getName().equals(name)) {
        log.debug("PARTICIPANT {}: configuring loopback", this.name);
        return outgoingMedia;
    }//from  w  w  w. ja v a  2 s.  c o  m

    log.debug("PARTICIPANT {}: receiving video from {}", this.name, sender.getName());

    WebRtcEndpoint incoming = incomingMedia.get(sender.getName());
    if (incoming == null) {
        log.debug("PARTICIPANT {}: creating new endpoint for {}", this.name, sender.getName());
        incoming = new WebRtcEndpoint.Builder(pipeline).build();

        incoming.addIceCandidateFoundListener(new EventListener<IceCandidateFoundEvent>() {

            @Override
            public void onEvent(IceCandidateFoundEvent event) {
                JsonObject response = new JsonObject();
                response.addProperty("id", "iceCandidate");
                response.addProperty("name", sender.getName());
                response.add("candidate", JsonUtils.toJsonObject(event.getCandidate()));
                try {
                    synchronized (session) {
                        session.sendMessage(new TextMessage(response.toString()));
                    }
                } catch (IOException e) {
                    log.debug(e.getMessage());
                }
            }
        });

        incomingMedia.put(sender.getName(), incoming);
    }

    log.debug("PARTICIPANT {}: obtained endpoint for {}", this.name, sender.getName());
    sender.getOutgoingWebRtcPeer().connect(incoming);

    return incoming;
}