我有一个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) {
...
}
如果我限制订阅查询接收较少的加密引号,那么它就可以正常工作。
我猜缓冲区更快地接收数据,然后消耗,所以即使限制是巨大的异常也会发生。
暂无答案!
目前还没有任何答案,快来回答吧!