WebSocket#
Tomcat предоставляет поддержку WebSocket в соответствии с RFC 6455 и реализует API Java WebSocket 1.1, определенное в JSR-356.
Также Tomcat предоставляет ряд специфичных настроек:
Таймаут записи при отправке сообщений WebSocket в блокирующем режиме:
По умолчанию
20000миллисекунд (20секунд).Изменяется путем установки свойства
org.apache.tomcat.websocket.BLOCKING_SEND_TIMEOUTв коллекции пользовательских свойств, прикрепленной к сессии WebSocket.Значение должно быть типа
Longи указывать таймаут в миллисекундах. Для бесконечного таймаута используйте-1.
Таймаут ожидания закрытия сессии WebSocket:
По умолчанию:
30000миллисекунд (30секунд).Изменяется путем установки свойства
org.apache.tomcat.websocket.SESSION_CLOSE_TIMEOUT.Значение должно быть типа
Long. Значения меньше или равные нулю игнорируются.
Таймаут записи при аномальном закрытии сессии:
По умолчанию:
50миллисекунд.Изменяется путем установки свойства
org.apache.tomcat.websocket.ABNORMAL_SESSION_CLOSE_SEND_TIMEOUT.Значение должно быть типа
Long. Значения меньше или равные нулю игнорируются.
Таймауты бездействия:
Помимо метода
Session.setMaxIdleTimeout(long), Tomcat предоставляет более гибкий контроль за таймаутами сессии из-за отсутствия активности.Установка свойства
org.apache.tomcat.websocket.READ_IDLE_TIMEOUT_MSвызовет таймаут сессии, если не получено ни одного сообщения WebSocket за указанное количество миллисекунд.Установка свойства
org.apache.tomcat.websocket.WRITE_IDLE_TIMEOUT_MSвызовет таймаут сессии, если не отправлено ни одного сообщения WebSocket за указанное количество миллисекунд.Данные свойства могут использоваться отдельно или вместе с методом
Session.setMaxIdleTimeout(long)или без него.
Размер буфера для бинарных сообщений:
По умолчанию:
8192байта.Изменяется путем установки параметра контекста сервлета
org.apache.tomcat.websocket.binaryBufferSize.
Размер буфера для текстовых сообщений:
По умолчанию:
8192байта.Изменяется путем установки параметра контекста сервлета
org.apache.tomcat.websocket.textBufferSize.
Программное развертывание после начала «рукопожатия» WebSocket:
Поведение контролируется параметром контекста сервлета
org.apache.tomcat.websocket.noAddAfterHandshake.По умолчанию можно изменить, установив системное свойство
org.apache.tomcat.websocket.STRICT_SPEC_COMPLIANCEв значениеtrue, но явная настройка в контексте сервлета всегда имеет приоритет.
Таймаут для операций ввода-вывода при установке соединения типа «WebSocket-клиент»:
Поведение контролируется свойством
org.apache.tomcat.websocket.IO_TIMEOUT_MS в userPropertiesвjavax.websocket.ClientEndpointConfig.По умолчанию:
5000миллисекунд (5секунд).
Настройка SSL для соединения типа «WebSocket-клиент»:
Конфигурация SSL контролируется свойствами
userPropertiesвjavax.websocket.ClientEndpointConfig:org.apache.tomcat.websocket.SSL_CONTEXT;org.apache.tomcat.websocket.SSL_PROTOCOLS;org.apache.tomcat.websocket.SSL_TRUSTSTORE;org.apache.tomcat.websocket.SSL_TRUSTSTORE_PWD.
Пароль по умолчанию для хранилища доверенных сертификатов:
changeit.Если установлено свойство
org.apache.tomcat.websocket.SSL_CONTEXT, свойстваSSL_TRUSTSTOREиSSL_TRUSTSTORE_PWDигнорируются.
Проверка имени хоста для защищенных соединений:
По умолчанию включена проверка имени хоста.
Для отключения проверки необходимо предоставить пользовательский
SSLContextчерез свойствоorg.apache.tomcat.websocket.SSL_CONTEXT.
Ограничение количества перенаправлений HTTP:
Контролируется свойством
org.apache.tomcat.websocket.MAX_REDIRECTIONS.По умолчанию:
20перенаправлений. Поддержку перенаправлений можно отключить, установив значение0.
Аутентификация
BASICилиDIGEST:Для подключения к серверу, требующему аутентификации, необходимо установить свойства:
org.apache.tomcat.websocket.WS_AUTHENTICATION_USER_NAME;org.apache.tomcat.websocket.WS_AUTHENTICATION_PASSWORD.
Опционально можно указать область для аутентификации:
org.apache.tomcat.websocket.WS_AUTHENTICATION_REALM.
Аутентификация через прокси:
Для подключения через прокси, требующий аутентификации, необходимо установить свойства:
org.apache.tomcat.websocket.WS_PROXY_AUTHENTICATION_USER_NAME;org.apache.tomcat.websocket.WS_PROXY_AUTHENTICATION_PASSWORD.
Опционально можно указать
Realmдля аутентификации:org.apache.tomcat.websocket.WS_PROXY_AUTHENTICATION_REALM.