2015-12-17 84 views
3

我在我們的spring mvc web應用中實現彈簧web-socket。然而,當我嘗試向終端發送真正大的消息時,我遇到了超出大小限制的消息。踩踏彈簧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> 

客戶端代碼看起來像這樣

function versionFiles() { 
     stompClient.send("/testbrkr/user/sockettest", {}, JSON.stringify(listIds)); 
    } 

你可以讓我知道什麼是一個很好的解決辦法。

答:如果你知道什麼是最大尺寸限制

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

我找就怎麼做局部的消息,將在這裏只要我發現後,並得到它的工作

回答

3

考慮爲<websocket:message-broker>定義<websocket:transport message-size=""/>選項:

配置爲呼入子協議消息的最大大小。 例如,當使用SockJS後退選項時,可以接收STOMP消息作爲多個WebSocket消息 或多個HTTP POST請求。

同樣可以使用WebSocketMessageBrokerConfigurer.configureWebSocketTransport(WebSocketTransportRegistration)實現註釋配置,並與setMessageSizeLimit()就此事來實現。

+0

謝謝,部分用於發送消息,但我無法在客戶端收到消息... – user1707141

+0

也許'setSendBufferSizeLimit()'是給你的嗎? –

+0

工作正常!下面是我在xml中如何做的 \t \t我目前正在調查部分郵件.. – user1707141

相關問題