• 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也啥都不输出,真坑人啊。

  • 相关阅读:
    js数组根据同一id进行分组
    心法利器[69] | 聊聊数据敏感性
    Web3去中心化存储生态图景
    考研数据结构——(图)
    剑指offer——JZ24 反转链表 解题思路与具体代码
    Shell脚本编程实践——第1关:编写一个脚本,求斐波那契数列的前10项及总和
    【Jquery-04】jq中的属性操作
    Kafka+redis分布式锁结合使用心得总结
    10. 同步控制指令
    区块链正在开启一场回归商业,融合商业的新发展
  • 原文地址:https://blog.csdn.net/peihexian/article/details/126596449