Параллельный вызов AbstractWebSocketHandler # handleTextMessage с тем же сеансом - PullRequest
0 голосов
/ 08 мая 2019

При реализации низкоуровневого сервера веб-сокетов (без остановки) и расширении AbstractWebSocketHandler я заметил, что невозможно вызвать метод handleTextMessage() одновременно для одного и того же соединения / сеанса.

Учитывая следующее:

    @Override
    public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        log(String.format("Session: %s, Thread: %s", session, Thread.currentThread()));
        // simulated longrunning task
        Thread.sleep(10000L);
    }

При вызове отправки 3-х сообщений от клиента этому обработчику быстро друг за другом вывод журнала производится с промежутками в 10 секунд:

Session: StandardWebSocketSession[id=0, uri=/name], Thread: Thread[http-nio-127.0.0.1-8080-exec-2,5,main], Time: 18:09:25.143
Session: StandardWebSocketSession[id=0, uri=/name], Thread: Thread[http-nio-127.0.0.1-8080-exec-2,5,main], Time: 18:09:35.152
Session: StandardWebSocketSession[id=0, uri=/name], Thread: Thread[http-nio-127.0.0.1-8080-exec-2,5,main], Time: 18:09:45.156

Есть ли возможность настроить spring для одновременного вызова обработчика handleTextMessage()?

...