[英]How to change the frame/buffer size on a Spring 5 webflux websocket client
My Spring 5 webflux websocket client is throwing below Exception when server sends large messages.当服务器发送大消息时,我的 Spring 5 webflux websocket 客户端抛出以下异常。 Can someone tell me how can I increase the frame size on the client?
有人能告诉我如何增加客户端的帧大小吗?
Flux<String> input = Flux.just(StrJSON);
WebSocketClient client = new ReactorNettyWebSocketClient();
client.execute(new URI(url),
session -> session
.send(input.map(session::textMessage))
.thenMany(
session.receive()
.map(t->t.getPayloadAsText())
.log()
)
.then()
).block();
Intermittent Exception:间歇性异常:
io.netty.handler.codec.CorruptedFrameException: Max frame length of 65536 has been exceeded.
at io.netty.handler.codec.http.websocketx.WebSocket08FrameDecoder.protocolViolation(WebSocket08FrameDecoder.java:412)
at io.netty.handler.codec.http.websocketx.WebSocket08FrameDecoder.decode(WebSocket08FrameDecoder.java:277)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:489)
.....
Probably a bit late to help you.帮助你可能有点晚了。
According to this merge request you should set your client as type of ReactorNettyWebSocketClient
instead of the interface WebSocketClient
.根据此合并请求,您应该将客户端设置为
ReactorNettyWebSocketClient
类型而不是接口WebSocketClient
。
Then you can call client.setMaxFramePayloadLength(maxFramePayload);
然后你可以调用
client.setMaxFramePayloadLength(maxFramePayload);
So in your code you should have:所以在你的代码中你应该有:
ReactorNettyWebSocketClient client = new ReactorNettyWebSocketClient();
client.setMaxFramePayloadLength(2097152);
client.execute(new URI(url),
session -> session
.send(input.map(session::textMessage))
.thenMany(
session.receive()
.map(t->t.getPayloadAsText())
.log()
)
.then()
).block();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.