websocket通信1009错误,

问题说明:

springboot继承 WebSocketConfigurer实现websocket通信服务,服务器端报错,“The decoded text message was too big for the output buffer and the endpoint does not support partial messages”,浏览器端显示服务器上的该次会话已经关闭。1009错误,内容长度超限。

问题解决

在应用启动类中通过注解注入方式设置通信的文本和二进制消息的大小。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
import org.springframework.web.socket.server.standard.ServletServerContainerFactoryBean;

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

    @Autowired
    private MyHandler myHandler;

    /**
     * sockJs 低版本浏览器不支持webSocket时使用
     * url结构:http://host:port/{endpoint}/{server-id}/{session-id}/websocket
     * 也可以: ws://host:port/{endpoint}/websocket
     * <p>
     * 不使用sockJs 访问时 url: ws://host:port/{endpoint}
     * <p>
     * setClientLibraryUrl 兼容客户端sockJs版本
     */
    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {

        registry.addHandler(myHandler, "/myHandler").setAllowedOrigins("*");
        registry.addHandler(myHandler, "/myHandler").setAllowedOrigins("*").withSockJS()
                .setTaskScheduler(sockJsScheduler()).setClientLibraryUrl("//cdn.jsdelivr.net/sockjs/1/sockjs.min.js");
    }

    @Bean
    public ServletServerContainerFactoryBean createWebSocketContainer() {
        ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean();
        // ws 传输数据的时候,数据过大有时候会接收不到,所以在此处设置bufferSize
        container.setMaxTextMessageBufferSize(512000);
        container.setMaxBinaryMessageBufferSize(512000);
        container.setMaxSessionIdleTimeout(15 * 60000L);
        return container;
    }

}

原文地址:https://www.cnblogs.com/Pan-xi-yi/p/12003190.html

时间: 2024-08-29 10:41:03

websocket通信1009错误,的相关文章

Flex4 DataGrid实现可复制单元格,同时解决自定义GridItemRenderer出现1009错误的方法

原创内容,如需转载,请注明出处,谢谢 最近在项目中发现Flex的DataGrid不支持内容复制,在涉及到保护敏感数据时倒是很有用处,但大部分情况下,我们还是希望客户能够直接复制DataGrid单元格中的内容进行快速操作,这个与用户体验背道而驰的问题一定要解决,因此想到直接自定义DataGrid的项呈现器来实现. 呆毛如下: 本来以为可以非常顺利,哪知居然给我碰到了一个BUG,网上查了查,也有不少童鞋们碰到了这个问题,不过似乎都没有有效的解决方案,这个主要是思维固化了,总认为官方的就一定是正确的.

netty与websocket通信demo

netty v3.9.4 websocket建立前,客户端需要与服务器进行握手 确认websocket连接,也就是说在处理websocket请求前,必需要处理一些http请求. websocket到现在为止,已经有多个版本,netty有相应的对应类,这部分处理一般不需要人工干预. 如果运行正常的话,会在页面的文本框中显示1-20记数. 可以通过firefox或chrome的开发人员工具,显看浏览器与服务器的交互. 主要是HttpServerChannelHandler2,加了些注释和少量debu

C#(SuperWebSocket)与websocket通信

原文:C#(SuperWebSocket)与websocket通信 客户端代码 点击可以查看一些关于websocket的介绍 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head> 7 <body> 8 <input type

signalr使用websocket报500错误

signalr使用websocket报500错误,WebSocket connection to 'ws://localhost:22862/signalr/connect?transport=webSockets&clientProtocol=1.5&connectionToken=Ab7SuqLggw%2BJL5kWeWcdv%2FI%2FdnRcikASgBnVNnsJu1qtIGq5tV7iXvQkDim%2FYFCJ9RNJvWTe9Zgjte2siJz2KXHX3n8ERyw4

手机端与网页通过websocket通信

手机端与网页通讯,使用websocket完成二者之间的联通. websocket选用socket.io类实现. 服务器端,使用nodejs,代码依赖了express和socket.io. 首先建立一个http服务器 var app = require('express')(); var server = require('http').Server(app); var socketio = require('./v1/socketio'); var db = require("./db/db.j

websocket通信

使用websocket连接服务器的终端,首先通过浏览器客户端的连接发送数据到服务器,客服端的连接http需要转换成WebSocket的网络协议,这里需要我们创建一个新的websocket实例.而且websocket是双向的通信,不像ajax这样的轮询数据,需要时总是延迟的传输.   var websocket = new WebSocket("ws://www.baidu.com");    websocket.onopen = function(){ // 表示连接服务器端的通信  

websocket通信之握手,封包,解包

介绍 WebSocket协议是基于TCP的一种新的协议.WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符.它实现了浏览器与服务器全双工(full-duplex)通信.其本质是保持TCP连接,在浏览器和服务端通过Socket进行通信. 上古时期的浏览器有些是不支持WebSocket的,下面来介绍如何在浏览器中创建一个websocket对象 var socket = new WebSocket("ws://127.0.0.1:8002/xxoo&quo

python实现建立websocket通信

实现代码如下: #websocket协议通信 import threading import time import websocket def when_message(ws, message): print('/n接收到的消息:' + message) # 当建立连接后,死循环不断输入消息发送给服务器 # 这里需要另起一个线程 def when_open(ws): print('连接成功') def run(): while True: a = input('请输入:') ws.send(a

串口通信参数错误导致接收字节并不是想要的结果

在编写串口通信时设置一下参数,导致接收的字节与单片机发送的字节对不上, serialPort.setSerialPortParams(115200, SerialPort.DATABITS_8,SerialPort.STOPBITS_1, SerialPort.PARITY_SPACE ); 经过测试后把最后一个参数设置为SerialPort.PARITY_NONE就不存在这个问题了