2014-09-10 39 views
8

Jetty 9支持both它自己的Jetty Websocket API以及標準的JSR 356 API,我認爲它是歷史原因(Jetty的API precedesfinal JSR 356)。Jetty WebSocket API與標準JSR 356 API

我查看了兩個API的基本文檔以及一些示例。這兩個API看起來都相當完整和相似。然而,我需要爲我正在編寫的一個新項目選擇一個,我希望避免使用未來可能會被棄用的API,或者可能會變得功能較少。

那麼除了明顯的事實,一個是標準化之外,兩者之間還有什麼重要的區別嗎?在這裏碼頭既:)的

回答

13

實施者

碼頭的WebSocket API是先和JSR-356 API是建立在它之上。

的JSR-356 API做幾件事情,所述碼頭的WebSocket API沒有,如

  • 解碼器的用於自動濱/文本對象轉換
  • 編碼器的用於自動對象到濱/文本轉換
  • 路徑帕拉姆處理(又名自動URI模板到方法PARAM映射)

然而,碼頭WebSocket的API可以做的事情的JSR-356 API不能。

  • 對於WebSocket的端點的任意創作,可以訪問HttpServletRequest的WebSocketCreator邏輯
  • 超時能夠更好地控制
  • 更精細的緩存/內存配置
  • 您可以管理的WebSocket擴展
  • 支持REG- ex基於端點的路徑映射
  • 訪問原始幀事件
  • WebSocket客戶端supp沃茨更好地與超時連接邏輯
  • 的WebSocket客戶端支持SSL(JSR-356獨立的客戶端具有用於此沒有配置選項)從活性的活性的WebSocket會話對象
  • 訪問UpgradeRequest
  • 訪問兩者的InetAddress端點信息WebSocket的Session對象無國籍端點
  • 更好的支持
  • 閱讀活動支持掛起/恢復邏輯,使應用程序的一些基本的TCP背壓/流量控制
  • 過濾器或基於Servlet的配置(JSR-356 APPR oach需要升級所有其他的servlet和過濾處理之前發生)

希望這會有所幫助,如果你想了解更多詳細信息,請使用jetty-users mailing list,因爲這種問題是計算器真的不合適。

+1

非常感謝您的回答。我注意到了一些這些差異(例如編碼器/解碼器和路徑參數處理),但您的答案非常有用。我也不確定我的問題在這裏完全不合適,儘管我確實同意在郵件列表中它可能更「在家中」。畢竟,這個問題不是主觀的,而是屬於「軟件開發所特有的實際的,可回答的問題」範疇(http://stackoverflow.com/help/on-topic) – Malt 2014-09-11 05:52:51

+0

已經有一段時間了,這篇文章,但如果你不介意我的問題 - 能發送歌曲有什麼問題? – misaka 2017-07-08 06:00:32