List of usage examples for org.springframework.messaging.simp.stomp StompCommand DISCONNECT
StompCommand DISCONNECT
To view the source code for org.springframework.messaging.simp.stomp StompCommand DISCONNECT.
Click Source Link
From source file:com.codeveo.lago.bot.stomp.client.WebSocketStompSession.java
public void disconnect() { StompHeaderAccessor headers = StompHeaderAccessor.create(StompCommand.DISCONNECT); Message<byte[]> message = MessageBuilder.withPayload(EMPTY_PAYLOAD).setHeaders(headers).build(); sendInternal(message);/*w w w.j a v a2 s . c o m*/ try { this.webSocketSession.close(CloseStatus.GOING_AWAY); } catch (IOException e) { throw new IllegalStateException(e); } }
From source file:fr.jugorleans.poker.client.stomp.WebSocketStompSession.java
public void disconnect() { StompHeaderAccessor headers = StompHeaderAccessor.create(StompCommand.DISCONNECT); Message<byte[]> message = MessageBuilder.withPayload(EMPTY_PAYLOAD).setHeaders(headers).build(); sendInternal(message);//www . j a v a 2 s. co m try { this.webSocketSession.close(); } catch (IOException e) { throw new IllegalStateException(e); } }
From source file:org.springframework.messaging.simp.stomp.DefaultStompSession.java
@Override public void disconnect() { this.closing = true; try {/*from ww w . java2 s. c o m*/ StompHeaderAccessor accessor = createHeaderAccessor(StompCommand.DISCONNECT); Message<byte[]> message = createMessage(accessor, EMPTY_PAYLOAD); execute(message); } finally { resetConnection(); } }
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()); }//from w ww.j a va 2s. c o m 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
@Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { String sessionId = session.getId(); this.sessions.remove(sessionId); if ((this.queueSuffixResolver != null) && (session.getPrincipal() != null)) { this.queueSuffixResolver.removeQueueSuffix(session.getPrincipal().getName(), sessionId); }//ww w . ja va 2 s.c o m StompHeaderAccessor headers = StompHeaderAccessor.create(StompCommand.DISCONNECT); headers.setSessionId(sessionId); Message<?> message = MessageBuilder.withPayloadAndHeaders(new byte[0], headers).build(); this.dispatchChannel.send(message); }
From source file:org.springframework.web.socket.messaging.StompSubProtocolHandler.java
/** * Handle incoming WebSocket messages from clients. *///from w ww .j av a 2 s. com public void handleMessageFromClient(WebSocketSession session, WebSocketMessage<?> webSocketMessage, MessageChannel outputChannel) { List<Message<byte[]>> messages; try { ByteBuffer byteBuffer; if (webSocketMessage instanceof TextMessage) { byteBuffer = ByteBuffer.wrap(((TextMessage) webSocketMessage).asBytes()); } else if (webSocketMessage instanceof BinaryMessage) { byteBuffer = ((BinaryMessage) webSocketMessage).getPayload(); } else { return; } BufferingStompDecoder decoder = this.decoders.get(session.getId()); if (decoder == null) { throw new IllegalStateException("No decoder for session id '" + session.getId() + "'"); } messages = decoder.decode(byteBuffer); if (messages.isEmpty()) { if (logger.isTraceEnabled()) { logger.trace("Incomplete STOMP frame content received in session " + session + ", bufferSize=" + decoder.getBufferSize() + ", bufferSizeLimit=" + decoder.getBufferSizeLimit() + "."); } return; } } catch (Throwable ex) { if (logger.isErrorEnabled()) { logger.error("Failed to parse " + webSocketMessage + " in session " + session.getId() + ". Sending STOMP ERROR to client.", ex); } handleError(session, ex, null); return; } for (Message<byte[]> message : messages) { try { StompHeaderAccessor headerAccessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class); Assert.state(headerAccessor != null, "No StompHeaderAccessor"); headerAccessor.setSessionId(session.getId()); headerAccessor.setSessionAttributes(session.getAttributes()); headerAccessor.setUser(getUser(session)); headerAccessor.setHeader(SimpMessageHeaderAccessor.HEART_BEAT_HEADER, headerAccessor.getHeartbeat()); if (!detectImmutableMessageInterceptor(outputChannel)) { headerAccessor.setImmutable(); } if (logger.isTraceEnabled()) { logger.trace("From client: " + headerAccessor.getShortLogMessage(message.getPayload())); } StompCommand command = headerAccessor.getCommand(); boolean isConnect = StompCommand.CONNECT.equals(command); if (isConnect) { this.stats.incrementConnectCount(); } else if (StompCommand.DISCONNECT.equals(command)) { this.stats.incrementDisconnectCount(); } try { SimpAttributesContextHolder.setAttributesFromMessage(message); boolean sent = outputChannel.send(message); if (sent) { if (isConnect) { Principal user = headerAccessor.getUser(); if (user != null && user != session.getPrincipal()) { this.stompAuthentications.put(session.getId(), user); } } if (this.eventPublisher != null) { Principal user = getUser(session); if (isConnect) { publishEvent(this.eventPublisher, new SessionConnectEvent(this, message, user)); } else if (StompCommand.SUBSCRIBE.equals(command)) { publishEvent(this.eventPublisher, new SessionSubscribeEvent(this, message, user)); } else if (StompCommand.UNSUBSCRIBE.equals(command)) { publishEvent(this.eventPublisher, new SessionUnsubscribeEvent(this, message, user)); } } } } finally { SimpAttributesContextHolder.resetAttributes(); } } catch (Throwable ex) { if (logger.isErrorEnabled()) { logger.error("Failed to send client message to application via MessageChannel" + " in session " + session.getId() + ". Sending STOMP ERROR to client.", ex); } handleError(session, ex, message); } } }
From source file:org.springframework.web.socket.messaging.StompSubProtocolHandler.java
private Message<byte[]> createDisconnectMessage(WebSocketSession session) { StompHeaderAccessor headerAccessor = StompHeaderAccessor.create(StompCommand.DISCONNECT); if (getHeaderInitializer() != null) { getHeaderInitializer().initHeaders(headerAccessor); }//from w w w.java 2 s .c om headerAccessor.setSessionId(session.getId()); headerAccessor.setSessionAttributes(session.getAttributes()); Principal user = getUser(session); if (user != null) { headerAccessor.setUser(user); } return MessageBuilder.createMessage(EMPTY_PAYLOAD, headerAccessor.getMessageHeaders()); }