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.visual_tools.nubomedia.nuboEarJava.NuboEarJavaHandler.java

private void start(final WebSocketSession session, JsonObject jsonMessage) {
    try {/*from w ww  .  j  a  v  a 2 s.c o  m*/

        String sessionId = session.getId();
        UserSession user = new UserSession(sessionId);
        users.put(sessionId, user);
        webRtcEndpoint = user.getWebRtcEndpoint();

        //Ice Candidate
        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()));
                sendMessage(session, new TextMessage(response.toString()));
            }
        });

        /******** Media Logic ********/
        ear = new NuboEarDetector.Builder(user.getMediaPipeline()).build();

        webRtcEndpoint.connect(ear);
        ear.connect(webRtcEndpoint);
        ear.activateServerEvents(1, 3000);
        addEarListener();
        // 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) {
            sendMessage(session, new TextMessage(response.toString()));
        }
        webRtcEndpoint.gatherCandidates();

    } catch (NotEnoughResourcesException e) {
        log.warn("Not enough resources", e);
        notEnoughResources(session);
    } catch (Throwable t) {
        log.error("Exception starting session", t);
        error(session, t.getClass().getSimpleName() + ": " + t.getMessage());
    }
}

From source file:org.kurento.jsonrpc.internal.ws.JsonRpcWebSocketHandler.java

@Override
public void handleTextMessage(final WebSocketSession wsSession, TextMessage message) throws Exception {

    try {/*from ww w .  j  av  a  2s. c  om*/

        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:ch.rasc.wampspring.config.WampSubProtocolHandler.java

/**
 * Handle WAMP messages going back out to WebSocket clients.
 *///from  w w w .  ja v  a  2  s .c o  m
@Override
public void handleMessageToClient(WebSocketSession session, Message<?> message) {
    if (!(message instanceof WampMessage)) {
        logger.error("Expected WampMessage. Ignoring " + message + ".");
        return;
    }

    boolean closeWebSocketSession = false;
    try {
        String json = ((WampMessage) message).toJson(this.jsonFactory);
        session.sendMessage(new TextMessage(json));
    } catch (SessionLimitExceededException ex) {
        // Bad session, just get out
        throw ex;
    } catch (Throwable ex) {
        // Could be part of normal workflow (e.g. browser tab closed)
        logger.debug("Failed to send WebSocket message to client in session " + session.getId() + ".", ex);
        closeWebSocketSession = true;
    } finally {
        if (closeWebSocketSession) {
            try {
                session.close(CloseStatus.PROTOCOL_ERROR);
            } catch (IOException ex) {
                // Ignore
            }
        }
    }
}

From source file:cn.com.inhand.devicenetworks.ap.websocket.WSDNAccessPoint.java

@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {

    System.out/* w  w w .  ja  v  a 2  s.  c om*/
            .println("Debug in WSDNAccessPoint.java [Ln:81] : WebSocketSession session=" + session.toString());

    super.handleTextMessage(session, message);
    TextMessage returnMessage = new TextMessage(message.getPayload() + " received at server");
    //session.sendMessage(returnMessage);
    System.out.println("Debug in WSDNAccessPoint.java [Ln:57] : WebSocketSession recv:" + message.getPayload());

    try {
        String string = message.getPayload();
        if (string == null || string.trim().equals("") || string.equals("undefined")) {
            System.out.println("Debug in WSDNAccessPoint.java [Ln:64] : WebSocketSession recv:null msg");

            return;
        }
        DNMessage msg = parser.unwrap(message.getPayload().getBytes());

        WSDNSession wsdnsn = this.cinfo.getWsdnsn(session.toString());

        if (wsdnsn == null) {
            if (msg.getName().equals("login")) {
                try {
                    this.onLogin(msg, session, wsdnsn);
                } catch (PacketException pe) {
                    //
                    Logger.getLogger(WSDNAccessPoint.class.getName()).warning(
                            "Failed to Login from " + session.getRemoteAddress() + ":" + pe.toString());
                    this.close(session);
                }
            } else {
                //?login
                Logger.getLogger(WSDNAccessPoint.class.getName()).warning(
                        "Illegal connection from + " + session.getRemoteAddress() + ", the msg:" + string);
                this.close(session);
            }
        } else if (!wsdnsn.isIsLogin()) {
            wsdnsn.setSession(session);
            try {

                this.onLogin(msg, session, wsdnsn);
            } catch (PacketException pe) {
                //
                Logger.getLogger(WSDNAccessPoint.class.getName())
                        .warning("Failed to Login from " + session.getRemoteAddress() + ":" + pe.toString());
                this.close(session);
            }
        } else {
            //?

            if (msg.getName().equalsIgnoreCase("heartbeat") && msg.getType() == 0) {
                this.onHeartbeat(msg, session, wsdnsn);

                this.updateStatus(2, wsdnsn);
            } else if (msg.getName().equalsIgnoreCase("logout")) {//&& msg.getType() == 0) {
                this.onLogout(msg, session, wsdnsn);
                session.close();
            } else if (msg.getType() == 1) {
                this.onAck(msg, session, wsdnsn);
            } else {
                this.onUnkownMsg(msg, session, wsdnsn);
                Logger.getLogger(WSDNAccessPoint.class.getName())
                        .warning("Unsupported msg from " + session.getRemoteAddress() + ":" + msg.toString());
                //this.close(session);
            }

        }

    } catch (PacketException ex) {
        Logger.getLogger(WSv1Processor.class.getName()).log(Level.SEVERE, "while handling a text message", ex);
    }

}

From source file:com.spring.cloud.study.websocket.WebSocketForwardClientHandler.java

@Override
public void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
    Channel ch = ctx.channel();/*from   www.  j av a2 s  .  co  m*/
    if (!handshaker.isHandshakeComplete()) {
        try {
            handshaker.finishHandshake(ch, (FullHttpResponse) msg);
            handshakeFuture.setSuccess();
        } catch (WebSocketHandshakeException e) {
            LOGGER.info("WebSocket Client failed to connect");
            handshakeFuture.setFailure(e);
        }
        return;
    }
    if (msg instanceof FullHttpResponse) {
        FullHttpResponse response = (FullHttpResponse) msg;
        throw new IllegalStateException("Unexpected FullHttpResponse (getStatus=" + response.status()
                + ", content=" + response.content().toString(CharsetUtil.UTF_8) + ')');
    }
    WebSocketFrame frame = (WebSocketFrame) msg;
    webSocketSession.sendMessage(new TextMessage(ByteBufUtil.getBytes(convertMessage(frame))));
}

From source file:org.kurento.tutorial.crowddetector.CrowdDetectorHandler.java

private void start(final WebSocketSession session, JsonObject jsonMessage) {
    try {/*from   www. ja v a 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.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:fi.vtt.nubomedia.armodule.BaseHandler.java

protected void error(WebSocketSession session, String message) {
    try {/* w  ww  .  j  a  v a 2  s.  c o m*/
        JsonObject response = new JsonObject();
        response.addProperty("id", "error");
        response.addProperty("message", message);
        sendMessage(session, new TextMessage(response.toString()));
        release(session);
    } catch (Exception e) {
        log.error("Exception sending message", e);
    }
}

From source file:dk.apaq.orderly.CallHandler.java

private void handleErrorResponse(Throwable throwable, WebSocketSession session, BroadcastMessageType responseId)
        throws IOException {
    stop(session);//from w  w  w.  ja  v  a2 s.c  o m
    log.error(throwable.getMessage(), throwable);
    BroadcastMessageResponse response = new BroadcastMessageResponse(responseId,
            BroadcastMessageResponseType.Rejected, throwable.getMessage());
    session.sendMessage(new TextMessage(objectMapper.writeValueAsString(response)));
}

From source file:eu.nubomedia.tutorial.repository.RepositoryHandler.java

public void sendPlayEnd(WebSocketSession session) {
    // Send playEnd message to client
    JsonObject response = new JsonObject();
    response.addProperty("id", "playEnd");
    sendMessage(session, new TextMessage(response.toString()));
}

From source file:org.chtijbug.drools.platform.runtime.servlet.websocket.SpringWebSocketServer.java

@Override
public void sendMessage(final PlatformManagementKnowledgeBean platformManagementKnowledgeBean)
        throws DroolsChtijbugException {
    PlatformManagementKnowledgeBean.PlatformManagementKnowledgeBeanCode stream = new PlatformManagementKnowledgeBean.PlatformManagementKnowledgeBeanCode();
    if (serverSession != null && serverSession.isOpen()) {
        StringWriter writer = new StringWriter();
        try {// w  w  w  . j  a va2 s  . c  o  m
            stream.encode(platformManagementKnowledgeBean, writer);
            TextMessage response = new TextMessage(writer.toString());
            LOG.info(">> Server : " + response);
            serverSession.sendMessage(response);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (EncodeException e) {
            e.printStackTrace();
        }

    }
}