List of usage examples for org.springframework.web.socket TextMessage TextMessage
public TextMessage(byte[] payload)
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); } }