我已经使用okhttp 3.5.0实现了Websocket客户端以连接到Spring Websocket服务器。
与服务器的websocket连接成功后,我订阅了多个主题以接收来自服务器的通知。收到通知后,如果在OnMessage函数中花很长时间来处理该消息,我观察到来自服务器的其他传入消息已排队,并等待第一条消息的完成。
是否有任何方法可以使WebSocketListener OnMessage函数并发,以使传入消息不等待任何其他较旧消息的完成?
我尝试将消息的处理委托给一个单独的线程,这解决了onMessage被阻塞的问题,但是我想知道还有其他方法可以实现相同的目的。
这是我创建websocket客户端的代码
OkHttpClient client = new OkHttpClient.Builder()
.readTimeout(0, TimeUnit.MILLISECONDS).sslSocketFactory(sslSocketFactory, trustManager)
.build();
Request request = new Request.Builder()
.url(url)
.build();
WebSocketListenerExtension webSocketListenerExtension = new WebSocketListenerExtension();
client.newWebSocket(request, webSocketListenerExtension);
// Trigger shutdown of the dispatcher's executor so this process can exit cleanly.
client.dispatcher().executorService().shutdown();