java – Spring Stomp over Websocket:消息/缓冲区/缓存/流限制
无法理解我在用于开发涉及图像/视频的聊天应用程序的websocket配置中的不同参数:
我注意到网页中的SockJs发送帧大小为16K的消息.我还测试了消息大小限制是什么决定了我可以传输的消息的最大大小. 能不能让我知道是什么: >流字节限制 您能告诉我们应该保留哪些尺寸以及为什么?什么是默认值?以及每个人如何影响我的聊天应用程序的性能? @Configuration @EnableWebSocketMessageBroker public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/stomp").withSockJS() .setStreamBytesLimit(15 * 1024) .setHttpMessageCacheSize(15 * 1024); } @Override public void configureMessageBroker(MessageBrokerRegistry registry) { registry.enableSimpleBroker("/queue/","/topic/","/exchange/"); registry.setApplicationDestinationPrefixes("/app"); } @Override public void configureWebSocketTransport(WebSocketTransportRegistration registration) { registration.setSendTimeLimit(15 * 1000) .setSendBufferSizeLimit(1 * 1024) // max message size 2GB (2048 bytes) : default is 64KB .setMessageSizeLimit(2 * 1024 * 1024); } } 解决方法
用我的发现和实施回答问题:
在以下配置中: @Override public void configureWebSocketTransport(WebSocketTransportRegistration registration) { registration.setSendTimeLimit(60 * 1000) .setSendBufferSizeLimit(200 * 1024 * 1024) .setMessageSizeLimit(200 * 1024 * 1024); } >流字节限制:来自源的信息 /** * Streaming transports save responses on the client side and don't free * memory used by delivered messages. Such transports need to recycle the * connection once in a while. This property sets a minimum number of bytes * that can be send over a single HTTP streaming request before it will be * closed. After that client will open a new request. Setting this value to * one effectively disables streaming and will make streaming transports to * behave like polling transports. * <p>The default value is 128K (i.e. 128 * 1024). */ public SockJsServiceRegistration setStreamBytesLimit(int streamBytesLimit) { this.streamBytesLimit = streamBytesLimit; return this; } >发送缓冲区大小限制 /** * The number of server-to-client messages that a session can cache while waiting for * the next HTTP polling request from the client. All HTTP transports use this * property since even streaming transports recycle HTTP requests periodically. * <p>The amount of time between HTTP requests should be relatively brief and will not * exceed the allows disconnect delay (see * {@link #setDisconnectDelay(long)}),5 seconds by default. * <p>The default size is 100. */ public SockJsServiceRegistration setHttpMessageCacheSize(int httpMessageCacheSize) { this.httpMessageCacheSize = httpMessageCacheSize; return this; } >什么是部分消息以及如何使用它们,它们在这里有用吗? @Bean public CommonsMultipartResolver multipartResolver() { CommonsMultipartResolver resolver = new CommonsMultipartResolver(); resolver.setMaxUploadSize(2 * 1024 * 1024 * 1024); // 2 GB limit set for file upload resolver.setDefaultEncoding("utf-8"); return resolver; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |