• 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 -SQL笔记(自学用)
    通过文章id递归查询所有评论(xml)
    uniapp生成的h5与flutter的原生进行交互
    java CharArrayReader类、CharArrayWriter类
    文件批量重命名加前缀的方法
    docker的安装
    PIE-Engine:广东省生态遥感指数RSEI研究2
    Ubuntu22.04 | 安装Matlab2021b
    云计算、大数据技术的智慧工地,实现对建筑工地实时监测、管理和控制的一种新型建筑管理方式
    Prompt原理详解
  • 原文地址:https://blog.csdn.net/peihexian/article/details/126596449