1. 程式人生 > 實用技巧 >websocket設定傳輸大小

websocket設定傳輸大小

tomcat中有提到:

If the application does not define a MessageHandler.Partial for incoming text messages, any incoming text messages must be buffered so the entire message can be delivered in a single call to the registered MessageHandler.
Whole for text messages. The default buffer size for text messages is 8192 bytes. This may be changed for a web application by setting the servlet context initialization parameter org.apache.tomcat.websocket.
textBufferSize to the desired value in bytes.

1、對專案web.xml新增如下配置(注意單位為byte)
<context-param>
    <param-name>org.apache.tomcat.websocket.textBufferSize</param-name>
    <param-value>5242800</param-value>
</context-param>

2、對於spring工程來說這個方法沒問題可以生效,但是springboot並沒有web.xml該如何解決呢?如下:

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class WebSocketConfig implements ServletContextInitializer{
    
    //配置websocket傳輸大小,50M
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        servletContext.addListener(WebAppRootListener.
class); servletContext.setInitParameter("org.apache.tomcat.websocket.textBufferSize","52428800"); servletContext.setInitParameter("org.apache.tomcat.websocket.binaryBufferSize","52428800"); } }

注意:在使用的時候還發現了一個問題,如上配置假如是以springboot內建tomcat啟動是沒有問題的,但是打成war後使用外接tomcat執行卻不生效,最終發現是因為外接tomcat版本問題,出問題的版本是tomcat8.0.xx,而使用tomcat8.5.xx就沒有這個問題了

參考連結:https://blog.csdn.net/luohualiushui1/article/details/86596754