2014-09-29 4 views

ответ

1

Tomcat использует фильтр для поиска запроса обновления HTTP, который запускает соединение WebSocket и передает его соответствующему обработчику, если он видит его.

Фильтр настроен с использованием ServletContainerInitializer. Местоположение фильтра будет зависеть от того, какие другие фильтры настраиваются веб-приложением и где веб-приложение помещает их в FilterChain. Возможно, например, что веб-приложение захочет разместить фильтр безопасности перед фильтром Web Socket, и Tomcat позволяет это.

+0

Будьте осторожны, это неопределенное поведение по спецификации javax.websocket. Это открытая ошибка в отношении этой конкретной спецификации - см. [WEBSOCKET_SPEC-188] (https://java.net/jira/browse/WEBSOCKET_SPEC-188) –

+0

@MarkThomas: как вы проверяете запрос, чтобы определить, является ли это веб-сайтом запрос или HTTP-запрос? – ThreaT

+0

Tomcat ищет заголовки обновления HTTP, определенные в спецификации WebSocket, и для соответствующего URI для зарегистрированной конечной точки. Если оба они найдены, запрос передается в WebSocket, иначе фильтр просто передает его следующему фильтру в цепочке. –

0

WebSockets является совершенно другим протоколом. Они не обрабатываются фильтрами или сервлетами, а скорее конечными точками. Чтобы создать их, вы используете для расширения класса конечных точек, но, как и все остальное в Java EE, теперь вы можете использовать аннотации. Для получения дополнительной информации ознакомьтесь с последним документом Java API for WebSockets

Чтобы создать их на стороне клиента, запрос начинается с HTTP, возможно, на JavaScript, но на Tomcat прослушивает конечную точку, а не обычные сервлеты.

+0

Это правильно! Но Tomcat должен найти способ справиться с запросом обновления websocket. Я хочу знать, как Tomcat обрабатывает запрос на обновление? Например, у причала есть фильтр обновления ws спереди, который обновляется, как только запрос попадает в фильтры. –

+0

Я проверил исходный код и понял, что «org/apache/tomcat/websocket/server/WsFilter.java» обрабатывает обновление websocket. PLease сообщите мне, если мое понимание правильное? Также этот фильтр будет первым фильтром, который будет вызван, любым другим упорядочением фильтров, указанным tomcat? –

Смежные вопросы