2010-02-03 43 views
14

上週我看了一下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應用程序中?

+1

我遇到了幾乎相同的問題。我真的想要擴展Tomcat,以顯示當WebSocket Servlet添加到Java EE規範時,我會如何看待它。要了解我如何攻擊Tomcat,可以查看http://java.dzone.com/articles/tomcat-websockets-html5 – 2011-06-23 19:36:46

回答

-3

是的,有一個非常好的一個(開放源代碼和完全免費):http://www.jWebSocket.org

+1

上的修補程序。不,jWebSocket不是基於servlet的。 – jarnbjo 2010-02-12 23:55:17

8

有一個在Jetty的實現。我們可以希望tomcat和jetty找到兼容的API。

+1

我知道,但我多少希望WebSocket支持應該可以使用標準的Servlet API,而不是使用任何容器特定的擴展。 – jarnbjo 2010-10-27 11:21:47

+0

我明白了。那麼只有即將到來的Servlet 3.0規範纔是解決方案。目前該規範是一個測試版(我認爲)。但是已經有一些規範的實現。當然在測試版中。 – Horcrux7 2010-10-27 18:33:49

+1

鏈接已死... – 2013-10-01 19:09:06

0

jWebSocket聲稱作爲Tomcat應用程序運行。不幸的是,jWebSocket的二進制發行版中缺少一些文件。有些人試圖重新編譯jWebSocket並獲取必要的文件,因爲源代碼可用。總而言之,jWebSocket似乎不是一個可靠的產品。

+0

我有同樣的經歷 – fransvn 2012-11-01 13:36:54