|
|
|
@ -99,9 +99,6 @@ public class StompProtocolHandler implements SubProtocolHandler { |
|
|
|
String payload = ((TextMessage)webSocketMessage).getPayload(); |
|
|
|
String payload = ((TextMessage)webSocketMessage).getPayload(); |
|
|
|
Message<?> message = this.stompMessageConverter.toMessage(payload); |
|
|
|
Message<?> message = this.stompMessageConverter.toMessage(payload); |
|
|
|
|
|
|
|
|
|
|
|
// TODO: validate size limits
|
|
|
|
|
|
|
|
// http://stomp.github.io/stomp-specification-1.2.html#Size_Limits
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (logger.isTraceEnabled()) { |
|
|
|
if (logger.isTraceEnabled()) { |
|
|
|
logger.trace("Message " + message); |
|
|
|
logger.trace("Message " + message); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -124,10 +121,6 @@ public class StompProtocolHandler implements SubProtocolHandler { |
|
|
|
logger.error("Terminating STOMP session due to failure to send message: ", t); |
|
|
|
logger.error("Terminating STOMP session due to failure to send message: ", t); |
|
|
|
sendErrorMessage(session, 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) { |
|
|
|
catch (Throwable error) { |
|
|
|
sendErrorMessage(session, error); |
|
|
|
sendErrorMessage(session, error); |
|
|
|
@ -149,13 +142,11 @@ public class StompProtocolHandler implements SubProtocolHandler { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (StompCommand.MESSAGE.equals(headers.getCommand()) && (headers.getSubscriptionId() == null)) { |
|
|
|
if (StompCommand.MESSAGE.equals(headers.getCommand()) && (headers.getSubscriptionId() == null)) { |
|
|
|
// TODO: failed message delivery mechanism
|
|
|
|
|
|
|
|
logger.error("Ignoring message, no subscriptionId header: " + message); |
|
|
|
logger.error("Ignoring message, no subscriptionId header: " + message); |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (!(message.getPayload() instanceof byte[])) { |
|
|
|
if (!(message.getPayload() instanceof byte[])) { |
|
|
|
// TODO: failed message delivery mechanism
|
|
|
|
|
|
|
|
logger.error("Ignoring message, expected byte[] content: " + message); |
|
|
|
logger.error("Ignoring message, expected byte[] content: " + message); |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -197,7 +188,7 @@ public class StompProtocolHandler implements SubProtocolHandler { |
|
|
|
else { |
|
|
|
else { |
|
|
|
throw new StompConversionException("Unsupported version '" + acceptVersions + "'"); |
|
|
|
throw new StompConversionException("Unsupported version '" + acceptVersions + "'"); |
|
|
|
} |
|
|
|
} |
|
|
|
connectedHeaders.setHeartbeat(0,0); // TODO
|
|
|
|
connectedHeaders.setHeartbeat(0,0); |
|
|
|
|
|
|
|
|
|
|
|
Principal principal = session.getPrincipal(); |
|
|
|
Principal principal = session.getPrincipal(); |
|
|
|
if (principal != null) { |
|
|
|
if (principal != null) { |
|
|
|
@ -210,8 +201,6 @@ public class StompProtocolHandler implements SubProtocolHandler { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// TODO: security
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Message<?> connectedMessage = MessageBuilder.withPayloadAndHeaders(new byte[0], connectedHeaders).build(); |
|
|
|
Message<?> connectedMessage = MessageBuilder.withPayloadAndHeaders(new byte[0], connectedHeaders).build(); |
|
|
|
byte[] bytes = this.stompMessageConverter.fromMessage(connectedMessage); |
|
|
|
byte[] bytes = this.stompMessageConverter.fromMessage(connectedMessage); |
|
|
|
session.sendMessage(new TextMessage(new String(bytes, Charset.forName("UTF-8")))); |
|
|
|
session.sendMessage(new TextMessage(new String(bytes, Charset.forName("UTF-8")))); |
|
|
|
|