На прошлой неделе я взглянул на WebSockets и немного подумал о том, как реализовать серверную часть с помощью Java Servlet API.Я не тратил слишком много времени, но столкнулся со следующими проблемами во время нескольких тестов с Tomcat, которые, по-видимому, невозможно решить без исправления контейнера или, по крайней мере, внесения изменений в реализацию контейнера HttpServletResponse:1003 *
Спецификация WebSocket требует определенного сообщения в ответе HTTP 101.HttpServletResponse.setStatus (int code, String message) устарел без упоминания о замене, которую можно использовать.После изменения конфигурации Tomcat по умолчанию я заставил Tomcat соблюдать мою строку сообщения, но поскольку этот метод устарел, я не уверен, будет ли он работать с другими контейнерами сервлетов.
WebSocketСпецификация требует определенного порядка первых нескольких заголовков в HTTP-ответе на запрос на обновление соединения.API сервлета не предлагает метод для определения порядка заголовков ответа, и Tomcat добавляет свои собственные заголовки к ответу, помещая несколько из них перед любыми заголовками, которые добавляются реализацией сервлета.
Поскольку длина содержимого ответа неизвестна при фиксации заголовка, Tomcat автоматически переключается на кодирование с частичной передачей для ответа, что несовместимо со спецификацией WebSocket.
Я упускаю что-то очевидное или действительно невозможно интегрировать конечные точки сервера WebSocket в веб-приложение на основе сервлета?