#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();