List of usage examples for org.springframework.web.socket WebSocketSession getPrincipal
@Nullable Principal getPrincipal();
From source file:ch.rasc.wampspring.message.UnsubscribeMessage.java
/** * Creates an internal unsubscribe message. The system creates this message when the * WebSocket session ends and sends it to the subscribed message handlers for cleaning * up/*ww w.j ava 2s .co m*/ * * @param sessionId the WebSocket session id **/ public static UnsubscribeMessage createCleanupMessage(WebSocketSession session) { UnsubscribeMessage msg = new UnsubscribeMessage("**"); msg.setWebSocketSessionId(session.getId()); msg.setPrincipal(session.getPrincipal()); msg.setWampSession(new WampSession(session)); msg.cleanup = true; return msg; }
From source file:ch.rasc.wampspring.message.WampMessage.java
public static <T extends WampMessage> T fromJson(WebSocketSession session, JsonFactory jsonFactory, String json) throws IOException { WampSession wampSession = new WampSession(session); T newWampMessage = fromJson(jsonFactory, json, wampSession); newWampMessage.setWebSocketSessionId(session.getId()); newWampMessage.setPrincipal(session.getPrincipal()); newWampMessage.setWampSession(wampSession); return newWampMessage; }
From source file:com.devicehive.websockets.ClientWebSocketHandler.java
@Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { super.afterConnectionEstablished(session); HiveWebsocketSessionState state = (HiveWebsocketSessionState) session.getAttributes() .get(HiveWebsocketSessionState.KEY); session.getAttributes().put(WebSocketAuthenticationManager.SESSION_ATTR_AUTHENTICATION, session.getPrincipal()); state.setEndpoint(HiveEndpoint.CLIENT); }
From source file:com.devicehive.websockets.DeviceWebSocketHandler.java
@Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { super.afterConnectionEstablished(session); HiveWebsocketSessionState state = (HiveWebsocketSessionState) session.getAttributes() .get(HiveWebsocketSessionState.KEY); session.getAttributes().put(WebSocketAuthenticationManager.SESSION_ATTR_AUTHENTICATION, session.getPrincipal()); state.setEndpoint(HiveEndpoint.DEVICE); }
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 ww .j a v a 2s.c om*/ 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:org.springframework.messaging.simp.stomp.StompProtocolHandler.java
/** * Handle incoming WebSocket messages from clients. *///from www. java 2s. c o m public void handleMessageFromClient(WebSocketSession session, WebSocketMessage webSocketMessage, MessageChannel outputChannel) { try { Assert.isInstanceOf(TextMessage.class, webSocketMessage); String payload = ((TextMessage) webSocketMessage).getPayload(); Message<?> message = this.stompMessageConverter.toMessage(payload); // TODO: validate size limits // http://stomp.github.io/stomp-specification-1.2.html#Size_Limits if (logger.isTraceEnabled()) { logger.trace("Processing STOMP message: " + message); } try { StompHeaderAccessor headers = StompHeaderAccessor.wrap(message); headers.setSessionId(session.getId()); headers.setUser(session.getPrincipal()); message = MessageBuilder.withPayloadAndHeaders(message.getPayload(), headers).build(); if (SimpMessageType.CONNECT.equals(headers.getMessageType())) { handleConnect(session, message); } outputChannel.send(message); } catch (Throwable t) { logger.error("Terminating STOMP session due to failure to send message: ", t); sendErrorMessage(session, t); } // TODO: send RECEIPT message if incoming message has "receipt" header // http://stomp.github.io/stomp-specification-1.2.html#Header_receipt } catch (Throwable error) { sendErrorMessage(session, error); } }
From source file:org.springframework.messaging.simp.stomp.StompProtocolHandler.java
protected void handleConnect(WebSocketSession session, Message<?> message) throws IOException { StompHeaderAccessor connectHeaders = StompHeaderAccessor.wrap(message); StompHeaderAccessor connectedHeaders = StompHeaderAccessor.create(StompCommand.CONNECTED); Set<String> acceptVersions = connectHeaders.getAcceptVersion(); if (acceptVersions.contains("1.2")) { connectedHeaders.setVersion("1.2"); } else if (acceptVersions.contains("1.1")) { connectedHeaders.setVersion("1.1"); } else if (acceptVersions.isEmpty()) { // 1.0/*from w ww . ja v a 2s. c o m*/ } else { throw new StompConversionException("Unsupported version '" + acceptVersions + "'"); } connectedHeaders.setHeartbeat(0, 0); // TODO Principal principal = session.getPrincipal(); if (principal != null) { connectedHeaders.setNativeHeader(CONNECTED_USER_HEADER, principal.getName()); connectedHeaders.setNativeHeader(QUEUE_SUFFIX_HEADER, session.getId()); if (this.queueSuffixResolver != null) { String suffix = session.getId(); this.queueSuffixResolver.addQueueSuffix(principal.getName(), session.getId(), suffix); } } // TODO: security Message<?> connectedMessage = MessageBuilder.withPayloadAndHeaders(new byte[0], connectedHeaders).build(); byte[] bytes = this.stompMessageConverter.fromMessage(connectedMessage); session.sendMessage(new TextMessage(new String(bytes, Charset.forName("UTF-8")))); }
From source file:org.springframework.messaging.simp.stomp.StompProtocolHandler.java
@Override public void afterSessionEnded(WebSocketSession session, CloseStatus closeStatus, MessageChannel outputChannel) { if ((this.queueSuffixResolver != null) && (session.getPrincipal() != null)) { this.queueSuffixResolver.removeQueueSuffix(session.getPrincipal().getName(), session.getId()); }// www .jav a 2s .c om StompHeaderAccessor headers = StompHeaderAccessor.create(StompCommand.DISCONNECT); headers.setSessionId(session.getId()); Message<?> message = MessageBuilder.withPayloadAndHeaders(new byte[0], headers).build(); outputChannel.send(message); }
From source file:org.springframework.messaging.simp.stomp.StompWebSocketHandler.java
/** * Handle incoming WebSocket messages from clients. *//* ww w. j a v a 2s. c o m*/ @Override protected void handleTextMessage(WebSocketSession session, TextMessage textMessage) { try { String payload = textMessage.getPayload(); Message<?> message = this.stompMessageConverter.toMessage(payload); // TODO: validate size limits // http://stomp.github.io/stomp-specification-1.2.html#Size_Limits if (logger.isTraceEnabled()) { logger.trace("Processing STOMP message: " + message); } try { StompHeaderAccessor headers = StompHeaderAccessor.wrap(message); headers.setSessionId(session.getId()); headers.setUser(session.getPrincipal()); message = MessageBuilder.withPayloadAndHeaders(message.getPayload(), headers).build(); if (SimpMessageType.CONNECT.equals(headers.getMessageType())) { handleConnect(session, message); } this.dispatchChannel.send(message); } catch (Throwable t) { logger.error("Terminating STOMP session due to failure to send message: ", t); sendErrorMessage(session, t); } // TODO: send RECEIPT message if incoming message has "receipt" header // http://stomp.github.io/stomp-specification-1.2.html#Header_receipt } catch (Throwable error) { sendErrorMessage(session, error); } }
From source file:org.springframework.messaging.simp.stomp.StompWebSocketHandler.java
protected void handleConnect(WebSocketSession session, Message<?> message) throws IOException { StompHeaderAccessor connectHeaders = StompHeaderAccessor.wrap(message); StompHeaderAccessor connectedHeaders = StompHeaderAccessor.create(StompCommand.CONNECTED); Set<String> acceptVersions = connectHeaders.getAcceptVersion(); if (acceptVersions.contains("1.2")) { connectedHeaders.setAcceptVersion("1.2"); } else if (acceptVersions.contains("1.1")) { connectedHeaders.setAcceptVersion("1.1"); } else if (acceptVersions.isEmpty()) { // 1.0//from w w w. j a v a 2 s.c om } else { throw new StompConversionException("Unsupported version '" + acceptVersions + "'"); } connectedHeaders.setHeartbeat(0, 0); // TODO Principal principal = session.getPrincipal(); if (principal != null) { connectedHeaders.setNativeHeader(CONNECTED_USER_HEADER, principal.getName()); connectedHeaders.setNativeHeader(QUEUE_SUFFIX_HEADER, session.getId()); if (this.queueSuffixResolver != null) { String suffix = session.getId(); this.queueSuffixResolver.addQueueSuffix(principal.getName(), session.getId(), suffix); } } // TODO: security Message<?> connectedMessage = MessageBuilder.withPayloadAndHeaders(new byte[0], connectedHeaders).build(); byte[] bytes = this.stompMessageConverter.fromMessage(connectedMessage); session.sendMessage(new TextMessage(new String(bytes, Charset.forName("UTF-8")))); }