Я реализовал клиент websocket, используя okhttp 3.5.0 для подключения к весеннему серверу 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();