2017-07-02 57 views
0

我一直在用Java編寫一個Web Socket服務器,這一點讓我困惑了一會兒。在GitHub上有TooTallNate的這個庫,它是「100%Java中的準系統WebSocket客戶端和服務器實現」:https://github.com/TooTallNate/Java-WebSocketJava Websockets - 被不同的選項困惑

它有很多明星,並且正在積極開發。

但是,似乎Java已經在主庫中有websocket功能? https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_a_WebSocket_server_in_Java

還有的還搞什麼Jetty的WebSocket的東西:http://www.eclipse.org/jetty/documentation/9.4.x/jetty-websocket-server-api.html

還有Netty中似乎有WebSocket的東西太多。

那麼究竟是什麼區別呢?這是一個簡單的問題嗎?還是表現?還是他們完全分開的東西?如果我需要5-10 kb的低延遲高頻發送消息,是否有一種選擇最合適?

+0

另請參見[Undertow](http://undertow.io/undertow-docs/undertow-docs-1.4.0/index.html#websockets)和[Grizzly](https://javaee.github.io/ grizzly/websockets.html)(如果包含Scala,JVM上還有更多,也可以使用vertx ...)。但那不是S.O.材料: - / –

回答

2

WebSocket是一種通過單個傳輸控制協議(TCP)套接字提供雙向,全雙工通信信道的技術。

這是由IETF標準化爲RFC 6455.

您提供的三通(TooTallNate,Mozilla的,碼頭),是正義的WebSocket的標準/協議的執行情況。

同樣Netty也有Websocket實現。

至於選擇哪一個:

看它喜歡,HTTP標準。

所有的Web服務器(Tomcat的,weblogic的,碼頭,的Apache HTTP等)實現相同的HTTP標準,而是選擇哪一種取決於許多因素,如:

  • 效率如何執行?
  • 配置友好嗎?
  • 內存/ CPU消耗

所以,你可能要進行一些性能測試,看看哪一個適合您的需求。