2015-12-17 12 views
3

Я использую весенний веб-разъем в нашем веб-приложении весеннего mvc. Однако, когда я пытаюсь послать действительно большое сообщение в конечную точку, я сталкиваюсь с сообщением о размерах.Сообщение Stomp spring web socket превышает ограничение по размеру

Я получаю следующее сообщение об ошибке,

message:The 'content-length' header 68718 exceeds the configured message buffer size limit 65536 

14:49:11,506 ERROR [org.springframework.web.socket.messaging.StompSubProtocolHandler] (http-localhost/127.0.0.1:8080-4) Failed to parse TextMessage payload=[13684590},..], byteCount=16384, last=true] in session vlsxdeol. Sending STOMP ERROR to client.: org.springframework.messaging.simp.stomp.StompConversionException: The 'content-length' header 68718 exceeds the configured message buffer size limit 65536 
at org.springframework.messaging.simp.stomp.BufferingStompDecoder.checkBufferLimits(BufferingStompDecoder.java:148) [spring-messaging-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
at org.springframework.messaging.simp.stomp.BufferingStompDecoder.decode(BufferingStompDecoder.java:124) [spring-messaging-4.1.6.RELEASE.jar:4.1.6.RELEASE] 

Вот моя конфигурация

@MessageMapping("/user/sockettest") 
@SendTo("/topic/sockettestresult") 
public String sockAdd(ListId[] listIds) { 
.. 
SecurityContextHolder.getContext().getAuthentication().getPrincipal(); 

return stringRet; 
} 

XML-конфигурации выглядит следующим образом

<websocket:simple-broker prefix="/topic"/> 

<websocket:message-converters register-defaults="false"> 
    <bean id="mappingJackson2MessageConverter" class="org.springframework.messaging.converter.MappingJackson2MessageConverter"> 
     <property name="objectMapper" ref="objectMapper"></property> 
    </bean> 
</websocket:message-converters> 
</websocket:message-broker> 

на стороне клиента код выглядит так

Можете ли вы сообщить мне, что было бы хорошо работать.

Ответ: Если вы знаете, что будет максимальный предельный размер

<websocket:transport message-size="75536" send-buffer-size="75536"></websocket:transport> 

Ищу о том, как сделать частичный обмен сообщениями, разместим его здесь, как только я узнаю, и заставить его работать

ответ

3

Рассмотрим <websocket:transport message-size=""/> вариант для определения <websocket:message-broker>:

настройки максимального размера сообщения для входящего суб-протокола. Например, сообщение STOMP может быть получено в виде нескольких сообщений WebSocket или нескольких запросов HTTP POST, когда используются резервные параметры SockJS.

То же самое может быть достигнуто в конфигурации с использованием аннотаций WebSocketMessageBrokerConfigurer.configureWebSocketTransport(WebSocketTransportRegistration) осуществления и с setMessageSizeLimit() по этому вопросу.

+0

Спасибо, что частично работал для отправки сообщения, но я не могу получить сообщение на стороне клиента ... – user1707141

+0

Может быть, 'setSendBufferSizeLimit()' для вас? –

+0

Это сработало! Вот как я это сделал в xml \t \t В настоящее время я просматриваю частичные сообщения. – user1707141