Насколько я понимаю (пожалуйста, поправьте меня, если я ошибаюсь), в tomcat входящие сообщения websocket обрабатываются последовательно. Это означает, что если у вас есть 100 входящих сообщений в один веб-сокет, они будут обрабатываться с использованием только одного потока одно за другим от сообщения 1 до сообщения 100.
Но это не работает для меня. Мне нужно одновременно обрабатывать входящие сообщения в веб-сокете, чтобы увеличить пропускную способность моего веб-сокета. Входящие сообщения не зависят друг от друга, поэтому их не нужно обрабатывать последовательно.
Вопрос в том, как настроить tomcat таким образом, чтобы он назначал несколько рабочих потоков на каждый веб-сокет для одновременной обработки входящих сообщений?
Любая подсказка приветствуется.
Здесь в tomcat код, который, как я думаю, блокируется для соединения с веб-сокетом (что имеет смысл):
/**
* Called when there is data in the ServletInputStream to process.
*
* @throws IOException if an I/O error occurs while processing the available
* data
*/
public void onDataAvailable() throws IOException {
synchronized (connectionReadLock) {
while (isOpen() && sis.isReady()) {
// Fill up the input buffer with as much data as we can
int read = sis.read(
inputBuffer, writePos, inputBuffer.length - writePos);
if (read == 0) {
return;
}
if (read == -1) {
throw new EOFException();
}
writePos += read;
processInputBuffer();
}
}
}