Я хочу понять обработку запроса обновления websocket в tomcat? Это делается через фильтры или сервлеты? Как запрос обновления ws обрабатывается TOmcat-8.Как Tomcat 8 обрабатывает запрос обновления websocket
Спасибо,
Anuj
Я хочу понять обработку запроса обновления websocket в tomcat? Это делается через фильтры или сервлеты? Как запрос обновления ws обрабатывается TOmcat-8.Как Tomcat 8 обрабатывает запрос обновления websocket
Спасибо,
Anuj
Tomcat использует фильтр для поиска запроса обновления HTTP, который запускает соединение WebSocket и передает его соответствующему обработчику, если он видит его.
Фильтр настроен с использованием ServletContainerInitializer. Местоположение фильтра будет зависеть от того, какие другие фильтры настраиваются веб-приложением и где веб-приложение помещает их в FilterChain. Возможно, например, что веб-приложение захочет разместить фильтр безопасности перед фильтром Web Socket, и Tomcat позволяет это.
WebSockets является совершенно другим протоколом. Они не обрабатываются фильтрами или сервлетами, а скорее конечными точками. Чтобы создать их, вы используете для расширения класса конечных точек, но, как и все остальное в Java EE, теперь вы можете использовать аннотации. Для получения дополнительной информации ознакомьтесь с последним документом Java API for WebSockets
Чтобы создать их на стороне клиента, запрос начинается с HTTP, возможно, на JavaScript, но на Tomcat прослушивает конечную точку, а не обычные сервлеты.
Это правильно! Но Tomcat должен найти способ справиться с запросом обновления websocket. Я хочу знать, как Tomcat обрабатывает запрос на обновление? Например, у причала есть фильтр обновления ws спереди, который обновляется, как только запрос попадает в фильтры. –
Я проверил исходный код и понял, что «org/apache/tomcat/websocket/server/WsFilter.java» обрабатывает обновление websocket. PLease сообщите мне, если мое понимание правильное? Также этот фильтр будет первым фильтром, который будет вызван, любым другим упорядочением фильтров, указанным tomcat? –
Будьте осторожны, это неопределенное поведение по спецификации javax.websocket. Это открытая ошибка в отношении этой конкретной спецификации - см. [WEBSOCKET_SPEC-188] (https://java.net/jira/browse/WEBSOCKET_SPEC-188) –
@MarkThomas: как вы проверяете запрос, чтобы определить, является ли это веб-сайтом запрос или HTTP-запрос? – ThreaT
Tomcat ищет заголовки обновления HTTP, определенные в спецификации WebSocket, и для соответствующего URI для зарегистрированной конечной точки. Если оба они найдены, запрос передается в WebSocket, иначе фильтр просто передает его следующему фильтру в цепочке. –