如何使用SpringWebSocket处理tomcat.websocket.readbufferoverflowexception?

n3h0vuf2  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(237)

我有一个websocket连接到cryptowat.ch websocket,它发出加密货币的价格。

...
@Autowired
WebSocketClient client;

var session = client.doHandshake(myWebSocketHandler, myWebSocketHttpHeaders, URI.create(myUrl)).get();
session.send(... //send a subscription message
...

然后我开始收到很多二进制信息,过了1秒。将抛出执行选项:

org.apache.tomcat.websocket.ReadBufferOverflowException: null
    at org.apache.tomcat.websocket.AsyncChannelWrapperSecure$ReadTask.run(AsyncChannelWrapperSecure.java:312) ~[tomcat-embed-websocket-9.0.43.jar:9.0.43]
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) ~[na:na]
    at java.base/java.lang.Thread.run(Thread.java:832) ~[na:na]

如何修复?
当我使用javascript连接到websocket时,一切正常:

var conn = new WebSocket(myUrl);

conn.on('message', function (msg) {
...
}

如果我限制订阅查询接收较少的加密引号,那么它就可以正常工作。
我猜缓冲区更快地接收数据,然后消耗,所以即使限制是巨大的异常也会发生。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题