Ответ 1
Существует реализация в Jetty. Мы можем надеяться, что tomcat и пристань найдут совместимый API.
Я смотрел WebSockets на прошлой неделе и сделал несколько соображений о том, как реализовать серверную часть с Java Servlet API. Я не потратил слишком много времени, но столкнулся со следующими проблемами во время нескольких тестов с Tomcat, которые, по-видимому, невозможно решить без исправления контейнера или, по крайней мере, для конкретных модификаций контейнера для реализации HttpServletResponse:
Спецификация WebSocket задает определенное сообщение в ответе 101 HTTP. HttpServletResponse.setStatus(int code, String message) устарел без упоминания пригодной для использования замены. После изменения конфигурации Tomcat по умолчанию я сделал Tomcat честью мою строку сообщения, но поскольку метод устарел, я не уверен, что это будет работать с другими контейнерами сервлетов.
Спецификация WebSocket требует определенного порядка первых нескольких заголовков в ответе HTTP на запрос обновления соединения. API-интерфейс сервлета не предлагает метод для указания порядка заголовков ответов, а Tomcat добавляет свои собственные заголовки в ответ, помещая несколько из них перед любыми заголовками, которые добавляются реализацией сервлета.
Так как длина содержимого ответа неизвестна при компиляции заголовка, Tomcat автоматически переключается на кодированное кодирование передачи для ответа, что несовместимо с спецификацией WebSocket.
Не хватает ли я чего-то очевидного или невозможно интегрировать конечные точки сервера WebSocket в веб-приложении на основе сервлетов?
Существует реализация в Jetty. Мы можем надеяться, что tomcat и пристань найдут совместимый API.
Проект Glassfish Atmosphere будет делать то, что вы хотите. Существует сервлет, который вы можете определить для выполнения всей работы.
jWebSocket
утверждает, что работает как приложение Tomcat. К сожалению, некоторые файлы отсутствуют в двоичном дистрибутиве jWebSocket
. Некоторые люди пытаются перекомпилировать jWebSocket
и получить необходимые файлы, поскольку исходный код доступен. В общем, jWebSocket
не кажется надежным продуктом.
Да, есть очень хороший (с открытым исходным кодом и полностью бесплатный): http://www.jWebSocket.org