Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如果发送消息量过大或者base64图片的时候会直接关闭socket能够通过配置解决? #28

Closed
NixerSo5 opened this issue Dec 6, 2023 · 16 comments

Comments

@NixerSo5
Copy link

NixerSo5 commented Dec 6, 2023

依赖名称:
concept-websocket-loadbalance-spring-boot-starter
依赖版本:

com.github.linyuzai
concept-websocket-loadbalance-spring-boot-starter
2.3.2

@NixerSo5
Copy link
Author

NixerSo5 commented Dec 6, 2023

在OnMessage的时候

@Linyuzai
Copy link
Owner

Linyuzai commented Dec 6, 2023

在OnMessage的时候

服务端发给客户端还是客户端发给服务,数据量大概是多大

@NixerSo5
Copy link
Author

NixerSo5 commented Dec 6, 2023

客户端发给服务端 目前发送大概在15k左右

@NixerSo5
Copy link
Author

NixerSo5 commented Dec 6, 2023

代码如下
@configuration
public class WebSocketLoadBalanceConfig {

@Value("${nxsocket.wsurl}")
private String wsurl;

@Autowired
RedisService redisService;

@Bean
public MessageHandler messageHandler() {
    return new WebSocketMessageHandler() {
        @SneakyThrows
        @Override
        public void onMessage(Message message, Connection connection,  ConnectionLoadBalanceConcept concept) {
            String b64Str = message.getPayload().toString();
            String decodedStr = new String(Base64Decoder.decode(b64Str));
            TransMessage transMessage = JSONObject.parseObject(decodedStr, TransMessage.class);
            if("call".equals(transMessage.getType())){
               HttpUtils.sendPostJson(wsurl+"/sendNxCall",JSONObject.toJSONString(transMessage));
            } else{
               HttpUtils.sendPostJson(wsurl+"/send-user",JSONObject.toJSONString(new PipMessage<String>(transMessage.getUuid(),b64Str)));
            }
        }
    };
}

@Bean
public ConnectionEventListener connectionEventListener() {
    return new WebSocketEventListener() {
        @Override
        public void onEvent(Object event, ConnectionLoadBalanceConcept concept) {
            if (event instanceof ConnectionEvent) {
                Connection connection = ((ConnectionEvent) event).getConnection();
                if (connection.isClientType()) {
                    if (event instanceof ConnectionEstablishEvent) {
                        System.out.println("Open " + connection.getMetadata());
                    } else if (event instanceof ConnectionCloseEvent) {
                        System.out.println("Close " + connection.getMetadata());
                    } else if (event instanceof ConnectionErrorEvent) {
                        System.out.println("Error " + connection.getMetadata());
                    }
                }
            }
        }
    };
}

@Bean
public ConnectionServerManager connectionServerManager() {
    return new ConnectionServerManager() {
        @Override
        public void add(ConnectionServer server, ConnectionLoadBalanceConcept concept) {

        }

        @Override
        public void remove(ConnectionServer server, ConnectionLoadBalanceConcept concept) {

        }

        @Override
        public void clear(ConnectionLoadBalanceConcept concept) {

        }

        @Override
        public boolean isEqual(ConnectionServer server1, ConnectionServer server2, ConnectionLoadBalanceConcept concept) {
            return false;
        }

        @Override
        public ConnectionServer getLocal(ConnectionLoadBalanceConcept concept) {
            return new ConnectionServer() {
                @Override
                public String getInstanceId() {
                    return "localhost";
                }

                @Override
                public String getServiceId() {
                    return "localhost";
                }

                @Override
                public String getHost() {
                    return "localhost";
                }

                @Override
                public int getPort() {
                    return 0;
                }

                @Override
                public Map<String, String> getMetadata() {
                    return Collections.emptyMap();
                }

                @Override
                public URI getUri() {
                    return null;
                }

                @Override
                public String getScheme() {
                    return null;
                }

                @Override
                public boolean isSecure() {
                    return false;
                }
            };
        }

        @Override
        public List<ConnectionServer> getConnectionServers(ConnectionLoadBalanceConcept concept) {
            return Collections.emptyList();
        }
    };
}

}

@NixerSo5
Copy link
Author

NixerSo5 commented Dec 6, 2023

html 代码如下

<title>Document</title> <textarea id="message"></textarea> send <script>
//链接socket
var socket
let messageElement = document.getElementById("message");
window.onload = function () {
    uid = uuid();
    // 设置本地存储
    if (typeof (WebSocket) == "undefined") {
        console.log("您的浏览器不支持WebSocket");
    } else {
        console.log("您的浏览器支持WebSocket");
        socket = new WebSocket("ws://127.0.0.1:8083/concept-websocket/user?userId=" + uid);
        //连接打开事件
        socket.onopen = function () {
            console.log("Socket 已打开");
        };
        //收到消息事件
        socket.onmessage = function (msg) {
            console.log(msg.data);
            console.log(base64Decode(msg.data));

        };
        //连接关闭事件
        socket.onclose = function () {
            console.log("Socket已关闭");
        };
        //发生了错误事件
        socket.onerror = function () {
            alert("服务异常请重试并联系开发者!")
        }
        //窗口关闭时,关闭连接
        window.unload = function () {
            socket.close();
        };
    }

}

function sendmsg() {
    text = messageElement.value;
    if (text == "") {
        alert("消息不能为空!");
        return;
    }



    let postdata = {
        "uuid": uid,
        "message": text
    }

    socket.send(base64Encode(JSON.stringify(postdata)));
    messageElement.value = "";
}

function uuid() {
    var s = [];
    var hexDigits = "0123456789abcdef";
    for (var i = 0; i < 36; i++) {
        s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
    }
    s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
    s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
    s[8] = s[13] = s[18] = s[23] = "-";

    var uuid = s.join("");
    return uuid;
}


// //function base64 decode
// function base64decode(str) {
//     var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
//     var base64DecodeChars = new Array(

// Base64 编码函数
function base64Encode(str) {
const encoder = new TextEncoder();
const data = encoder.encode(str);
const base64 = btoa(String.fromCharCode.apply(null, data));
return base64;
}

// Base64 解码函数
function base64Decode(base64) {
const binaryStr = atob(base64);
const decoder = new TextDecoder();
const decodedStr = decoder.decode(new Uint8Array([...binaryStr].map(char => char.charCodeAt(0))));
return decodedStr;
}

</script>

@NixerSo5
Copy link
Author

NixerSo5 commented Dec 6, 2023

image
发送后截图

@Linyuzai
Copy link
Owner

Linyuzai commented Dec 6, 2023

用的tomcat吗,后端有异常信息吗,我这边好像没有复现

@Linyuzai
Copy link
Owner

Linyuzai commented Dec 6, 2023

用的tomcat吗,后端有异常信息吗,我这边好像没有复现

我晚点用你的demo试下

@NixerSo5
Copy link
Author

NixerSo5 commented Dec 6, 2023

好的麻烦了 直接用的springboot 3.0.5
设置了
server:
port: 8083
tomcat:
max-http-form-post-size:50MB
没有什么效果

@Linyuzai
Copy link
Owner

Linyuzai commented Dec 6, 2023

服务端没有任何报错吗

@NixerSo5
Copy link
Author

NixerSo5 commented Dec 6, 2023

没有 就是显示关闭了我发下日志

C:\Users\nixer.jdks\corretto-17.0.9\bin\java.exe -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:56521,suspend=y,server=n -XX:TieredStopAtLevel=1 -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-Dmanagement.endpoints.jmx.exposure.include=*" -javaagent:C:\Users\nixer\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\232.9921.47\plugins\java\lib\rt\debugger-agent.jar=file:/C:/Users/nixer/AppData/Local/Temp/capture.props -Dfile.encoding=UTF-8 -classpath D:\mysdk\maoyou\iai\target\classes;D:\mysdk\mvnlib\org\springdoc\springdoc-openapi-starter-webmvc-ui\2.1.0\springdoc-openapi-starter-webmvc-ui-2.1.0.jar;D:\mysdk\mvnlib\org\springdoc\springdoc-openapi-starter-webmvc-api\2.1.0\springdoc-openapi-starter-webmvc-api-2.1.0.jar;D:\mysdk\mvnlib\org\springdoc\springdoc-openapi-starter-common\2.1.0\springdoc-openapi-starter-common-2.1.0.jar;D:\mysdk\mvnlib\io\swagger\core\v3\swagger-core-jakarta\2.2.9\swagger-core-jakarta-2.2.9.jar;D:\mysdk\mvnlib\io\swagger\core\v3\swagger-annotations-jakarta\2.2.9\swagger-annotations-jakarta-2.2.9.jar;D:\mysdk\mvnlib\io\swagger\core\v3\swagger-models-jakarta\2.2.9\swagger-models-jakarta-2.2.9.jar;D:\mysdk\mvnlib\jakarta\validation\jakarta.validation-api\3.0.2\jakarta.validation-api-3.0.2.jar;D:\mysdk\mvnlib\com\fasterxml\jackson\dataformat\jackson-dataformat-yaml\2.14.2\jackson-dataformat-yaml-2.14.2.jar;D:\mysdk\mvnlib\org\webjars\swagger-ui\4.18.2\swagger-ui-4.18.2.jar;D:\mysdk\mvnlib\com\aventrix\jnanoid\jnanoid\2.0.0\jnanoid-2.0.0.jar;D:\mysdk\mvnlib\org\springframework\boot\spring-boot-starter\3.0.5\spring-boot-starter-3.0.5.jar;D:\mysdk\mvnlib\org\springframework\boot\spring-boot\3.0.5\spring-boot-3.0.5.jar;D:\mysdk\mvnlib\org\springframework\boot\spring-boot-autoconfigure\3.0.5\spring-boot-autoconfigure-3.0.5.jar;D:\mysdk\mvnlib\org\springframework\boot\spring-boot-starter-logging\3.0.5\spring-boot-starter-logging-3.0.5.jar;D:\mysdk\mvnlib\ch\qos\logback\logback-classic\1.4.6\logback-classic-1.4.6.jar;D:\mysdk\mvnlib\ch\qos\logback\logback-core\1.4.6\logback-core-1.4.6.jar;D:\mysdk\mvnlib\org\apache\logging\log4j\log4j-to-slf4j\2.19.0\log4j-to-slf4j-2.19.0.jar;D:\mysdk\mvnlib\org\slf4j\jul-to-slf4j\2.0.7\jul-to-slf4j-2.0.7.jar;D:\mysdk\mvnlib\jakarta\annotation\jakarta.annotation-api\2.1.1\jakarta.annotation-api-2.1.1.jar;D:\mysdk\mvnlib\org\springframework\spring-core\6.0.7\spring-core-6.0.7.jar;D:\mysdk\mvnlib\org\springframework\spring-jcl\6.0.7\spring-jcl-6.0.7.jar;D:\mysdk\mvnlib\org\yaml\snakeyaml\1.33\snakeyaml-1.33.jar;D:\mysdk\mvnlib\org\springframework\boot\spring-boot-starter-web\3.0.5\spring-boot-starter-web-3.0.5.jar;D:\mysdk\mvnlib\org\springframework\boot\spring-boot-starter-json\3.0.5\spring-boot-starter-json-3.0.5.jar;D:\mysdk\mvnlib\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.14.2\jackson-datatype-jdk8-2.14.2.jar;D:\mysdk\mvnlib\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.14.2\jackson-datatype-jsr310-2.14.2.jar;D:\mysdk\mvnlib\com\fasterxml\jackson\module\jackson-module-parameter-names\2.14.2\jackson-module-parameter-names-2.14.2.jar;D:\mysdk\mvnlib\org\springframework\boot\spring-boot-starter-tomcat\3.0.5\spring-boot-starter-tomcat-3.0.5.jar;D:\mysdk\mvnlib\org\apache\tomcat\embed\tomcat-embed-core\10.1.7\tomcat-embed-core-10.1.7.jar;D:\mysdk\mvnlib\org\apache\tomcat\embed\tomcat-embed-el\10.1.7\tomcat-embed-el-10.1.7.jar;D:\mysdk\mvnlib\org\apache\tomcat\embed\tomcat-embed-websocket\10.1.7\tomcat-embed-websocket-10.1.7.jar;D:\mysdk\mvnlib\org\springframework\spring-web\6.0.7\spring-web-6.0.7.jar;D:\mysdk\mvnlib\org\springframework\spring-beans\6.0.7\spring-beans-6.0.7.jar;D:\mysdk\mvnlib\org\springframework\spring-webmvc\6.0.7\spring-webmvc-6.0.7.jar;D:\mysdk\mvnlib\org\springframework\spring-aop\6.0.7\spring-aop-6.0.7.jar;D:\mysdk\mvnlib\org\springframework\spring-expression\6.0.7\spring-expression-6.0.7.jar;D:\mysdk\mvnlib\org\apache\httpcomponents\httpclient\4.5.4\httpclient-4.5.4.jar;D:\mysdk\mvnlib\org\apache\httpcomponents\httpcore\4.4.16\httpcore-4.4.16.jar;D:\mysdk\mvnlib\commons-codec\commons-codec\1.15\commons-codec-1.15.jar;D:\mysdk\mvnlib\org\apache\httpcomponents\httpmime\4.5\httpmime-4.5.jar;D:\mysdk\mvnlib\org\projectlombok\lombok\1.18.26\lombok-1.18.26.jar;D:\mysdk\mvnlib\jakarta\xml\bind\jakarta.xml.bind-api\4.0.0\jakarta.xml.bind-api-4.0.0.jar;D:\mysdk\mvnlib\jakarta\activation\jakarta.activation-api\2.1.1\jakarta.activation-api-2.1.1.jar;D:\mysdk\mvnlib\org\hamcrest\hamcrest\2.2\hamcrest-2.2.jar;D:\mysdk\mvnlib\junit\junit\4.10\junit-4.10.jar;D:\mysdk\mvnlib\org\hamcrest\hamcrest-core\2.2\hamcrest-core-2.2.jar;D:\mysdk\mvnlib\com\alibaba\fastjson\1.2.83\fastjson-1.2.83.jar;D:\mysdk\mvnlib\cn\hutool\hutool-all\5.7.12\hutool-all-5.7.12.jar;D:\mysdk\mvnlib\org\mybatis\spring\boot\mybatis-spring-boot-starter\3.0.2\mybatis-spring-boot-starter-3.0.2.jar;D:\mysdk\mvnlib\org\springframework\boot\spring-boot-starter-jdbc\3.0.5\spring-boot-starter-jdbc-3.0.5.jar;D:\mysdk\mvnlib\com\zaxxer\HikariCP\5.0.1\HikariCP-5.0.1.jar;D:\mysdk\mvnlib\org\springframework\spring-jdbc\6.0.7\spring-jdbc-6.0.7.jar;D:\mysdk\mvnlib\org\mybatis\spring\boot\mybatis-spring-boot-autoconfigure\3.0.2\mybatis-spring-boot-autoconfigure-3.0.2.jar;D:\mysdk\mvnlib\org\mybatis\mybatis\3.5.13\mybatis-3.5.13.jar;D:\mysdk\mvnlib\org\mybatis\mybatis-spring\3.0.2\mybatis-spring-3.0.2.jar;D:\mysdk\maoyou\iai\libs\chatgpt-java-1.1.5-nixerfix.jar;D:\mysdk\mvnlib\com\squareup\retrofit2\retrofit\2.9.0\retrofit-2.9.0.jar;D:\mysdk\mvnlib\com\squareup\okhttp3\okhttp\4.10.0\okhttp-4.10.0.jar;D:\mysdk\mvnlib\com\squareup\okio\okio-jvm\3.0.0\okio-jvm-3.0.0.jar;D:\mysdk\mvnlib\org\jetbrains\kotlin\kotlin-stdlib-common\1.7.22\kotlin-stdlib-common-1.7.22.jar;D:\mysdk\mvnlib\org\jetbrains\kotlin\kotlin-stdlib\1.7.22\kotlin-stdlib-1.7.22.jar;D:\mysdk\mvnlib\org\jetbrains\annotations\13.0\annotations-13.0.jar;D:\mysdk\mvnlib\com\squareup\retrofit2\converter-jackson\2.9.0\converter-jackson-2.9.0.jar;D:\mysdk\mvnlib\com\fasterxml\jackson\core\jackson-databind\2.14.2\jackson-databind-2.14.2.jar;D:\mysdk\mvnlib\com\fasterxml\jackson\core\jackson-annotations\2.14.2\jackson-annotations-2.14.2.jar;D:\mysdk\mvnlib\com\fasterxml\jackson\core\jackson-core\2.14.2\jackson-core-2.14.2.jar;D:\mysdk\mvnlib\com\squareup\retrofit2\adapter-rxjava2\2.9.0\adapter-rxjava2-2.9.0.jar;D:\mysdk\mvnlib\io\reactivex\rxjava2\rxjava\2.0.0\rxjava-2.0.0.jar;D:\mysdk\mvnlib\org\reactivestreams\reactive-streams\1.0.4\reactive-streams-1.0.4.jar;D:\mysdk\mvnlib\org\springframework\boot\spring-boot-starter-data-redis\3.0.5\spring-boot-starter-data-redis-3.0.5.jar;D:\mysdk\mvnlib\org\springframework\data\spring-data-redis\3.0.4\spring-data-redis-3.0.4.jar;D:\mysdk\mvnlib\org\springframework\data\spring-data-keyvalue\3.0.4\spring-data-keyvalue-3.0.4.jar;D:\mysdk\mvnlib\org\springframework\data\spring-data-commons\3.0.4\spring-data-commons-3.0.4.jar;D:\mysdk\mvnlib\org\springframework\spring-oxm\6.0.7\spring-oxm-6.0.7.jar;D:\mysdk\mvnlib\org\springframework\spring-context-support\6.0.7\spring-context-support-6.0.7.jar;D:\mysdk\mvnlib\io\lettuce\lettuce-core\6.2.3.RELEASE\lettuce-core-6.2.3.RELEASE.jar;D:\mysdk\mvnlib\io\netty\netty-common\4.1.90.Final\netty-common-4.1.90.Final.jar;D:\mysdk\mvnlib\io\netty\netty-handler\4.1.90.Final\netty-handler-4.1.90.Final.jar;D:\mysdk\mvnlib\io\netty\netty-resolver\4.1.90.Final\netty-resolver-4.1.90.Final.jar;D:\mysdk\mvnlib\io\netty\netty-buffer\4.1.90.Final\netty-buffer-4.1.90.Final.jar;D:\mysdk\mvnlib\io\netty\netty-transport-native-unix-common\4.1.90.Final\netty-transport-native-unix-common-4.1.90.Final.jar;D:\mysdk\mvnlib\io\netty\netty-codec\4.1.90.Final\netty-codec-4.1.90.Final.jar;D:\mysdk\mvnlib\io\netty\netty-transport\4.1.90.Final\netty-transport-4.1.90.Final.jar;D:\mysdk\mvnlib\io\projectreactor\reactor-core\3.5.4\reactor-core-3.5.4.jar;D:\mysdk\mvnlib\org\springframework\boot\spring-boot-starter-websocket\3.0.5\spring-boot-starter-websocket-3.0.5.jar;D:\mysdk\mvnlib\org\springframework\spring-messaging\6.0.7\spring-messaging-6.0.7.jar;D:\mysdk\mvnlib\org\springframework\spring-websocket\6.0.7\spring-websocket-6.0.7.jar;D:\mysdk\mvnlib\com\mysql\mysql-connector-j\8.0.32\mysql-connector-j-8.0.32.jar;D:\mysdk\mvnlib\com\alibaba\druid-spring-boot-starter\1.2.5\druid-spring-boot-starter-1.2.5.jar;D:\mysdk\mvnlib\com\alibaba\druid\1.2.5\druid-1.2.5.jar;D:\mysdk\mvnlib\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;D:\mysdk\mvnlib\org\slf4j\slf4j-api\2.0.7\slf4j-api-2.0.7.jar;D:\mysdk\mvnlib\io\milvus\milvus-sdk-java\2.2.1\milvus-sdk-java-2.2.1.jar;D:\mysdk\mvnlib\io\grpc\grpc-netty-shaded\1.38.0\grpc-netty-shaded-1.38.0.jar;D:\mysdk\mvnlib\io\grpc\grpc-core\1.38.0\grpc-core-1.38.0.jar;D:\mysdk\mvnlib\com\google\android\annotations\4.1.1.4\annotations-4.1.1.4.jar;D:\mysdk\mvnlib\io\perfmark\perfmark-api\0.23.0\perfmark-api-0.23.0.jar;D:\mysdk\mvnlib\io\grpc\grpc-protobuf\1.38.0\grpc-protobuf-1.38.0.jar;D:\mysdk\mvnlib\io\grpc\grpc-api\1.38.0\grpc-api-1.38.0.jar;D:\mysdk\mvnlib\io\grpc\grpc-context\1.38.0\grpc-context-1.38.0.jar;D:\mysdk\mvnlib\com\google\protobuf\protobuf-java\3.12.0\protobuf-java-3.12.0.jar;D:\mysdk\mvnlib\com\google\api\grpc\proto-google-common-protos\2.0.1\proto-google-common-protos-2.0.1.jar;D:\mysdk\mvnlib\io\grpc\grpc-protobuf-lite\1.38.0\grpc-protobuf-lite-1.38.0.jar;D:\mysdk\mvnlib\com\google\guava\guava\30.1-android\guava-30.1-android.jar;D:\mysdk\mvnlib\com\google\guava\failureaccess\1.0.1\failureaccess-1.0.1.jar;D:\mysdk\mvnlib\com\google\guava\listenablefuture\9999.0-empty-to-avoid-conflict-with-guava\listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar;D:\mysdk\mvnlib\org\checkerframework\checker-compat-qual\2.5.5\checker-compat-qual-2.5.5.jar;D:\mysdk\mvnlib\com\google\j2objc\j2objc-annotations\1.3\j2objc-annotations-1.3.jar;D:\mysdk\mvnlib\com\google\errorprone\error_prone_annotations\2.4.0\error_prone_annotations-2.4.0.jar;D:\mysdk\mvnlib\org\codehaus\mojo\animal-sniffer-annotations\1.19\animal-sniffer-annotations-1.19.jar;D:\mysdk\mvnlib\io\grpc\grpc-stub\1.38.0\grpc-stub-1.38.0.jar;D:\mysdk\mvnlib\com\google\protobuf\protobuf-java-util\3.12.0\protobuf-java-util-3.12.0.jar;D:\mysdk\mvnlib\org\apache\commons\commons-text\1.10.0\commons-text-1.10.0.jar;D:\mysdk\mvnlib\org\apache\commons\commons-lang3\3.12.0\commons-lang3-3.12.0.jar;D:\mysdk\mvnlib\org\apache\commons\commons-collections4\4.3\commons-collections4-4.3.jar;D:\mysdk\mvnlib\org\json\json\20190722\json-20190722.jar;D:\mysdk\mvnlib\org\apache\logging\log4j\log4j-slf4j-impl\2.19.0\log4j-slf4j-impl-2.19.0.jar;D:\mysdk\mvnlib\org\apache\logging\log4j\log4j-api\2.19.0\log4j-api-2.19.0.jar;D:\mysdk\mvnlib\org\apache\logging\log4j\log4j-core\2.19.0\log4j-core-2.19.0.jar;D:\mysdk\mvnlib\org\codehaus\plexus\plexus-utils\3.0.20\plexus-utils-3.0.20.jar;D:\mysdk\mvnlib\org\glassfish\jaxb\jaxb-runtime\4.0.2\jaxb-runtime-4.0.2.jar;D:\mysdk\mvnlib\org\glassfish\jaxb\jaxb-core\4.0.2\jaxb-core-4.0.2.jar;D:\mysdk\mvnlib\org\eclipse\angus\angus-activation\2.0.0\angus-activation-2.0.0.jar;D:\mysdk\mvnlib\org\glassfish\jaxb\txw2\4.0.2\txw2-4.0.2.jar;D:\mysdk\mvnlib\com\sun\istack\istack-commons-runtime\4.1.1\istack-commons-runtime-4.1.1.jar;D:\mysdk\mvnlib\com\github\linyuzai\concept-websocket-loadbalance-spring-boot-starter\2.3.2\concept-websocket-loadbalance-spring-boot-starter-2.3.2.jar;D:\mysdk\mvnlib\com\github\linyuzai\concept-connection-loadbalance-core\2.3.2\concept-connection-loadbalance-core-2.3.2.jar;D:\mysdk\mvnlib\com\github\linyuzai\concept-connection-loadbalance-autoconfigure\2.3.2\concept-connection-loadbalance-autoconfigure-2.3.2.jar;D:\mysdk\mvnlib\com\github\linyuzai\concept-connection-loadbalance-websocket\2.3.2\concept-connection-loadbalance-websocket-2.3.2.jar;D:\mysdk\mvnlib\org\springframework\kafka\spring-kafka\3.0.5\spring-kafka-3.0.5.jar;D:\mysdk\mvnlib\org\springframework\spring-context\6.0.7\spring-context-6.0.7.jar;D:\mysdk\mvnlib\org\springframework\spring-tx\6.0.7\spring-tx-6.0.7.jar;D:\mysdk\mvnlib\org\springframework\retry\spring-retry\2.0.1\spring-retry-2.0.1.jar;D:\mysdk\mvnlib\org\apache\kafka\kafka-clients\3.3.2\kafka-clients-3.3.2.jar;D:\mysdk\mvnlib\com\github\luben\zstd-jni\1.5.2-1\zstd-jni-1.5.2-1.jar;D:\mysdk\mvnlib\org\lz4\lz4-java\1.8.0\lz4-java-1.8.0.jar;D:\mysdk\mvnlib\org\xerial\snappy\snappy-java\1.1.8.4\snappy-java-1.1.8.4.jar;D:\mysdk\mvnlib\io\micrometer\micrometer-observation\1.10.5\micrometer-observation-1.10.5.jar;D:\mysdk\mvnlib\io\micrometer\micrometer-commons\1.10.5\micrometer-commons-1.10.5.jar;D:\mysdk\mvnlib\com\google\code\findbugs\jsr305\3.0.2\jsr305-3.0.2.jar;D:\mysdk\mvnlib\com\aliyun\aliyun-sdk-ha3engine-vector\1.1.1\aliyun-sdk-ha3engine-vector-1.1.1.jar;D:\mysdk\mvnlib\com\aliyun\tea-util\0.2.20\tea-util-0.2.20.jar;D:\mysdk\mvnlib\com\aliyun\darabonba-string\0.0.5\darabonba-string-0.0.5.jar;D:\mysdk\mvnlib\com\aliyun\darabonba-encode-util\0.0.2\darabonba-encode-util-0.0.2.jar;D:\mysdk\mvnlib\org\bouncycastle\bcprov-jdk15on\1.68\bcprov-jdk15on-1.68.jar;D:\mysdk\mvnlib\com\aliyun\darabonba-map\0.0.1\darabonba-map-0.0.1.jar;D:\mysdk\mvnlib\com\aliyun\tea\1.1.14\tea-1.1.14.jar;D:\mysdk\mvnlib\org\jacoco\org.jacoco.agent\0.8.4\org.jacoco.agent-0.8.4-runtime.jar;D:\mysdk\mvnlib\redis\clients\jedis\4.3.2\jedis-4.3.2.jar;D:\mysdk\mvnlib\org\apache\commons\commons-pool2\2.11.1\commons-pool2-2.11.1.jar;D:\mysdk\mvnlib\com\google\code\gson\gson\2.9.1\gson-2.9.1.jar;D:\mysdk\mvnlib\io\jsonwebtoken\jjwt\0.9.1\jjwt-0.9.1.jar;D:\mysdk\mvnlib\javax\xml\bind\jaxb-api\2.3.0\jaxb-api-2.3.0.jar;D:\mysdk\mvnlib\com\squareup\okhttp3\okhttp-sse\4.10.0\okhttp-sse-4.10.0.jar;D:\mysdk\mvnlib\org\jetbrains\kotlin\kotlin-stdlib-jdk8\1.7.22\kotlin-stdlib-jdk8-1.7.22.jar;D:\mysdk\mvnlib\org\jetbrains\kotlin\kotlin-stdlib-jdk7\1.7.22\kotlin-stdlib-jdk7-1.7.22.jar;D:\mysdk\mvnlib\com\squareup\okhttp3\logging-interceptor\4.10.0\logging-interceptor-4.10.0.jar;C:\Users\nixer\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\232.9921.47\lib\idea_rt.jar com.npro.iai.IaiApplication
Connected to the target VM, address: '127.0.0.1:56521', transport: 'socket'

. ____ _ __ _ _
/\ / ' __ _ () __ __ _ \ \ \
( ( )_
_ | '_ | '| | ' / ` | \ \ \
\/ )| |)| | | | | || (| | ) ) ) )
' |
| .__|| ||| |_, | / / / /
=========|
|==============|/=////
:: Spring Boot :: (v3.0.5)

2023-12-06T17:43:02.506+08:00 INFO 22300 --- [ main] com.npro.iai.IaiApplication : Starting IaiApplication using Java 17.0.9 with PID 22300 (D:\mysdk\maoyou\iai\target\classes started by nixer in D:\mysdk\maoyou\iai)
2023-12-06T17:43:02.511+08:00 INFO 22300 --- [ main] com.npro.iai.IaiApplication : The following 1 profile is active: "dev"
2023-12-06T17:43:03.642+08:00 INFO 22300 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode
2023-12-06T17:43:03.646+08:00 INFO 22300 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
2023-12-06T17:43:03.687+08:00 INFO 22300 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 21 ms. Found 0 Redis repository interfaces.
2023-12-06T17:43:04.543+08:00 INFO 22300 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8083 (http)
2023-12-06T17:43:04.556+08:00 INFO 22300 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2023-12-06T17:43:04.556+08:00 INFO 22300 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.7]
2023-12-06T17:43:04.696+08:00 INFO 22300 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2023-12-06T17:43:04.697+08:00 INFO 22300 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2104 ms
2023-12-06T17:43:05.873+08:00 INFO 22300 --- [ main] f.a.AutowiredAnnotationBeanPostProcessor : Autowired annotation should only be used on methods with parameters: public void com.npro.iai.service.impl.MeerkAtServiceImpl.setClient()
2023-12-06T17:43:06.520+08:00 INFO 22300 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [templates/index.html]
2023-12-06T17:43:07.118+08:00 INFO 22300 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8083 (http) with context path ''
2023-12-06T17:43:07.133+08:00 INFO 22300 --- [ main] com.npro.iai.IaiApplication : Started IaiApplication in 5.269 seconds (process running for 6.307)
2023-12-06T17:43:07.216+08:00 INFO 22300 --- [ task-3] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited
=======================!toolcode===================
=======================!black!niger===================
=======================!tools===================
2023-12-06T17:43:23.556+08:00 INFO 22300 --- [nio-8083-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2023-12-06T17:43:23.557+08:00 INFO 22300 --- [nio-8083-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2023-12-06T17:43:23.558+08:00 INFO 22300 --- [nio-8083-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
Open {_selector_user_id=403b852a-c873-4702-8bc5-4c148c8b0eec}
Close {_selector_user_id=403b852a-c873-4702-8bc5-4c148c8b0eec}
Open {_selector_user_id=685b1e07-9890-4e72-8fb2-846053ecea32}
Close {_selector_user_id=685b1e07-9890-4e72-8fb2-846053ecea32}
=======================!toolcode===================
=======================!black!niger===================
=======================!tools===================
Open {_selector_user_id=cc41b427-c7b2-491c-ab8c-7140a9e1f446}
=======================!toolcode===================
=======================!black!niger===================
=======================!tools===================
Close {_selector_user_id=cc41b427-c7b2-491c-ab8c-7140a9e1f446}
=======================!toolcode===================
=======================!black!niger===================
=======================!tools===================
=======================!toolcode===================
=======================!black!niger===================
=======================!tools===================
=======================!toolcode===================
=======================!black!niger===================
=======================!tools===================
=======================!toolcode===================
=======================!black!niger===================
=======================!tools===================
Open {_selector_user_id=2c664116-af0b-419c-8eff-f20daccc16a6}
Close {_selector_user_id=2c664116-af0b-419c-8eff-f20daccc16a6}
=======================!toolcode===================
=======================!black!niger===================
=======================!tools===================
=======================!toolcode===================
=======================!black!niger===================
=======================!tools===================
=======================!toolcode===================
=======================!black!niger===================
=======================!tools===================
=======================!toolcode===================
=======================!black!niger===================
=======================!tools===================
=======================!toolcode===================
=======================!black!niger===================
=======================!tools===================
=======================!toolcode===================
=======================!black!niger===================
=======================!tools===================
=======================!toolcode===================
=======================!black!niger===================
=======================!tools===================
=======================!toolcode===================
=======================!black!niger===================
=======================!tools===================
=======================!toolcode===================
=======================!black!niger===================
=======================!tools===================
=======================!toolcode===================
=======================!black!niger===================
=======================!tools===================
=======================!toolcode===================
=======================!black!niger===================
=======================!tools===================

@NixerSo5
Copy link
Author

NixerSo5 commented Dec 6, 2023

iai-websocket (2).zip
我重新写了一个项目 然后依然能复先这个问题

@Linyuzai
Copy link
Owner

Linyuzai commented Dec 6, 2023

找到原因了,你把close的原因打印出来就能看到了

@Component
public class WebSocketParams implements WebSocketLifecycleListener {

    @Override
    public void onEstablish(Connection connection, ConnectionLoadBalanceConcept concept) {
        ((ServletWebSocketConnection) connection).getSession().setTextMessageSizeLimit(15000000);
        ((ServletWebSocketConnection) connection).getSession().setBinaryMessageSizeLimit(15000000);
    }

    @Override
    public void onClose(Connection connection, Object reason, ConnectionLoadBalanceConcept concept) {

    }
}

应该也可以统一配置WebSocketContainer,不过我没试

@NixerSo5
Copy link
Author

NixerSo5 commented Dec 6, 2023

好的我先观察一下

@Linyuzai
Copy link
Owner

Linyuzai commented Dec 6, 2023

找到原因了,你把close的原因打印出来就能看到了

@Component
public class WebSocketParams implements WebSocketLifecycleListener {

    @Override
    public void onEstablish(Connection connection, ConnectionLoadBalanceConcept concept) {
        ((ServletWebSocketConnection) connection).getSession().setTextMessageSizeLimit(15000000);
        ((ServletWebSocketConnection) connection).getSession().setBinaryMessageSizeLimit(15000000);
    }

    @Override
    public void onClose(Connection connection, Object reason, ConnectionLoadBalanceConcept concept) {

    }
}

应该也可以统一配置WebSocketContainer,不过我没试

用这个配置可以改大小限制

@NixerSo5
Copy link
Author

NixerSo5 commented Dec 6, 2023

非常感谢 测试有效 错误也看到了
The decoded text message was too big for the output buffer and the endpoint does not support partial messages

@NixerSo5 NixerSo5 closed this as completed Dec 6, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants