2010-02-03 2 views
14

지난 주 WebSocket을 살펴보고 Java Servlet API로 서버 측을 구현하는 방법에 대해 몇 가지 생각을했습니다.서블릿 컨테이너가 제공하는 웹 소켓

  • : 나는 HttpServletResponse를 구현에 컨테이너 특정 수정 컨테이너를 패치하거나 적어도하지 않고 해결하는 것은 불가능 보인다 톰캣과 몇 가지 검사 중에 다음과 같은 문제에 너무 많은 시간을 할애하지만, 실행하지 않았다 WebSocket 스펙은 101 HTTP 응답에 정의 된 메시지를 요구합니다. HttpServletResponse.setStatus (int code, String message)는 사용 가능한 대체를 언급하지 않고 더 이상 사용되지 않습니다. 기본 Tomcat 구성을 변경 한 후, Tomcat이 내 메시지 문자열을 사용하게 만들었지 만이 메소드가 사용되지 않으므로 다른 서블릿 컨테이너에서 작동하는지 확신 할 수 없습니다.

  • WebSocket 사양에는 연결 업그레이드 요청에 대한 HTTP 응답에서 처음 몇 개의 헤더가 지정되어야합니다. 서블릿 API는 응답 헤더의 순서를 지정하는 메소드를 제공하지 않으며 Tomcat은 자체 헤더를 응답에 추가합니다. 서블릿 구현으로 추가되는 헤더 앞에 몇 개를 추가합니다.

  • 헤더를 커밋 할 때 응답의 내용 길이를 알 수 없으므로 Tomcat은 자동으로 응답의 청크 분할 전송 인코딩으로 전환합니다.이 인코딩은 WebSocket 사양과 호환되지 않습니다.

확실한 정보가 없거나 서블릿 기반 웹 응용 프로그램에서 WebSocket 서버 끝점을 통합 할 수없는 이유는 무엇입니까? http://www.jWebSocket.org

+1

거의 같은 문제가 발생했습니다. Java EE 스펙이 추가되었을 때 "WebSocket Servlet"을 어떻게 보이고 싶은지를 보여주기 위해 Tomcat을 확장하려고했습니다. Tomcat을 해킹 한 방법을 보려면 http://java.dzone.com/articles/tomcat-websockets-html5 –

답변

-3

예 아주 좋은 (오픈 소스와 완전 무료)가있다. 바람둥이와 부두가 호환되는 API를 찾길 바랍니다.

+1

에서 패치를 살펴보십시오. 아니요, jWebSocket은 서블릿 기반이 아닙니다. – jarnbjo

8

Jetty의 구현이 있습니다 :

+1

나도 알아,하지만 나는 WebSocket 지원이 표준 Servlet API를 사용할 수 있어야하고 컨테이너 별 확장을 사용하지 말아야한다는 것을 어느 정도 기대하고 있었다. – jarnbjo

+0

이해합니다. 그런 다음 나오는 Servlet 3.0 스펙 만 솔루션입니다. 현재 사양은 베타입니다 (제 생각에는). 그러나 이미 스펙의 일부 구현이 있습니다. 물론 베타 버전입니다. – Horcrux7

+1

링크가 죽었습니다 ... –

6

Glassfish Atmosphere 프로젝트는 당신이 원하는대로 할 것입니다. 모든 작업을 수행하기 위해 정의 할 수있는 서블릿이 있습니다.

0

jWebSocket 톰캣 응용 프로그램으로 실행되도록 요구합니다. 유감스럽게도 jWebSocket의 이진 분포에서 일부 파일이 누락되었습니다. 어떤 사람들은 소스 코드를 사용할 수 있기 때문에 jWebSocket을 다시 컴파일하고 필요한 파일을 얻으려고합니다. 전체적으로 jWebSocket은 신뢰할 수있는 제품으로 보이지 않습니다.

+0

동일한 경험을하고 있습니다. – fransvn