同时两个OkHttp websocket连接,其中一个线程不足

4ioopgfo  于 2022-09-19  发布在  Spring
关注(0)|答案(1)|浏览(167)

bounty将在6天后到期。此问题的答案有资格获得+500的声誉奖励。Walking Corpse希望引起更多关注这个问题。

在我在Intellij中运行的spring boot应用程序中,我有一个@Scheduled任务,两个WebSocket流使用来自两个不同OKhttpClient示例的OkHttp连接打开到两个不同的服务器。我不认为OkHttpClient中的连接池设置。生成器在这里很重要,因为有两个OkHttpClient示例。两个websocket流最初都接收一些事件,然后其中一个再也不会接收任何事件。我还通过打印工作线程的哈希代码验证了它们是不同的。[![image][1][1]
遗憾的是,我在命令行mvn运行时也注意到了同样的问题,所以这似乎不是Intellij特有的问题。
如何使在两个套接字流上连续接收的事件?如果我重复使用同一个OkHttpClient来创建这两个连接,会有帮助吗?
更新:不想浪费时间等待解决这个问题,我采取了极端的步骤,将其分成两个独立的应用程序,每个应用程序都有一个websocket侦听器。然而,我面临同样的问题,其中一个在启动几秒钟后停止接收任何回调。不能将其归咎于远程服务器,因为如果我单独运行它们中的任何一个,它永远不会停止接收回调流。我需要它们同时启动和运行,并相互通信。
fwiw,我正在使用[this][2]客户端库订阅一个WebSocket流,并使用[this][3]订阅另一个。第一个端点是wss://stream.binance.com:9443/ws/btcusdt@第二个是wss://fstream.binance.com.后一个订阅是通过发布JSON{“方法”:“订阅”,“id”:1663348051361,“参数”:btcusdt@aggTrade“}给它。
我与服务器端点的客户支持人员进行了交谈,他们无法帮助我,他们只是说,如果我能够单独订阅套接字流,他们看不到任何原因,当我同时向他们两个提交时,其中一个应该停止工作。[1] :https://i.stack.imgur.com/T5oia.png[2]:https://github.com/binance-exchange/binance-java-api/blob/master/src/main/java/com/binance/api/client/impl/BinanceApiWebSocketClientImpl.java#L47 [3]: https://github.com/Binance-docs/Binance_Futures_Java/blob/master/src/main/java/com/binance/client/impl/WebSocketStreamClientImpl.java#L63

c7rzv4ha

c7rzv4ha1#

每个WebSocket都有自己的线程。可能是你的听众有什么问题吗?

相关问题