上週我看了一下WebSockets,並就如何使用Java Servlet API實現服務器端提出了一些想法。我沒有花太多的時間,但遇到了以下問題期間Tomcat的一些測試,這似乎是不可能解決,而不打補丁的容器,或者至少使容器具體修改HttpServletResponse的實現:由Servlet容器服務的WebSockets
WebSocket規範要求在101 HTTP響應中定義一條消息。 HttpServletResponse.setStatus(int code,String message)已棄用,未提及可用的替換。在更改默認的Tomcat配置後,我讓Tomcat兌現了我的消息字符串,但由於該方法已被棄用,我不確定這是否可以與其他servlet容器一起使用。
WebSocket規範要求對連接升級請求的HTTP響應中頭幾個標頭的指定順序。 servlet API沒有提供指定響應頭的順序的方法,Tomcat將其自己的頭添加到響應中,並將其中的一些頭放在由servlet實現添加的任何頭之前。
由於響應的內容長度在提交報頭時未知,因此Tomcat會自動切換爲與WebSocket規範不兼容的響應的分塊傳輸編碼。
我是否缺少明顯的東西,還是真的無法將WebSocket服務器端點集成到基於servlet的Web應用程序中?
我遇到了幾乎相同的問題。我真的想要擴展Tomcat,以顯示當WebSocket Servlet添加到Java EE規範時,我會如何看待它。要了解我如何攻擊Tomcat,可以查看http://java.dzone.com/articles/tomcat-websockets-html5 – 2011-06-23 19:36:46