• springboot websocket server无法接收二进制消息数据问题一例


    java编程真的是在天上飞的感觉,写点服务器端代码时真省事啊,可是出了问题是真不好排查啊。特简单一websocket server,可以触发onOpen,onClose,甚至接收文本消息的onMessage也能触发执行,但是就是针对二进制的onMessage说啥也收不到数据,尝试换了各种姿势,也不报错,也收不到数据,最后翻看其他人的博客发现说默认java的websocket server最多只能接收8k的二进制数据,想收到数据调大配置参数就可以了,乖乖,加上配置以后果然能收到数据了,配置如下:

    1. package com.xxx.slientprint;
    2. import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
    3. import org.springframework.boot.web.servlet.ServletContextInitializer;
    4. import org.springframework.context.annotation.ComponentScan;
    5. import org.springframework.context.annotation.Configuration;
    6. import org.springframework.web.util.WebAppRootListener;
    7. import javax.servlet.ServletContext;
    8. import javax.servlet.ServletException;
    9. @Configuration
    10. @ComponentScan
    11. @EnableAutoConfiguration
    12. public class WebAppRootContext implements ServletContextInitializer {
    13. @Override
    14. public void onStartup(ServletContext servletContext) throws ServletException {
    15. servletContext.addListener(WebAppRootListener.class);
    16. //这里设置了30兆的缓冲区
    17. //Tomcat每次请求过来时在创建session时都会把这个webSocketContainer作为参数传进去所以对所有的session都生效了
    18. servletContext.setInitParameter("org.apache.tomcat.websocket.textBufferSize","30000000");
    19. servletContext.setInitParameter("org.apache.tomcat.websocket.binaryBufferSize","30000000");
    20. }
    21. }

    咱不说别的,大哥你限制了接收buffer大小你倒是说一声啊,配了slf4j也啥都不输出,真坑人啊。

  • 相关阅读:
    Linux安装Mysql主从集群(图文解说详细版)
    springboot 调用第三方接口的方式(一)使用RestTemplate方法
    xargs命令
    这Bug只能通过压测发现
    WPS中图的自动编号及引用
    基于深度混合核极限学习机的多变量输入时间序列预测
    并发编程系列-分而治之思想Forkjoin
    XSS-labs1-20关通过手册
    cpu性能分析工具
    基于ZYNQ的PCIE高速数据采集卡的设计(二)总体设计与上位机
  • 原文地址:https://blog.csdn.net/peihexian/article/details/126596449