WebSocketListener onMessage блокируется, а другие входящие сообщения ставятся в очередь

#java #websocket #okhttp #okhttp3

#java #websocket #okhttp

Вопрос:

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