2010-10-23 76 views
28

我想創建具有低負載的簡單服務器。目標是讓幾個JavaScript客戶端可以訪問通過WebSockets在Java中實現的一些功能。我尋求最好的圖書館使用 - 它應該是簡單,健壯等現在我考慮3個替代品 - jWebSocket - 碼頭 - netty 什麼是最好的?或者可能是別的東西?服務器端WebSockets的最佳Java框架

在此先感謝

+1

JEE7現在支持Websocket。看到SO回答[這裏](http://stackoverflow.com/a/18555847/1285418)。 – 2013-09-01 06:35:20

回答

13

jWebSocket現在包含Jetty 8.0引擎,其中包括SSL,並且包含許多其他的好東西。它提供跨瀏覽器和跨平臺兼容的客戶端甚至更多的移動應用程序,例如在Android,Symbian和BlackBerry下。服務器可以很容易地通過插件進行擴展,並且已經包含了很多(例如認證/自動化,JDBC,SMTP,XMPP/Jabber,RPC,Twitter,文件共享,聊天等)。只要看看它... http://jwebsocket.org。期待您的反饋。

問候 亞歷

+0

我是Java網絡套接字的新手。我需要創建需要使用通道名稱進行對等通信的Java客戶端,我想使用Jweb套接字,但由於我不知道如何創建,因此無法啓動我的私人服務器有網絡套接字。我應該創建一個servlet並將其作爲Web套接字端點嗎?或者是他們的任何其他方式?善意地期待一個答案@ user502448 – 2015-06-20 15:15:29

14

我會用經過驗證的Java servlet服務器:Jetty或Resin。在同時擁有一直延伸到處理的WebSockets:

Jetty WebSockets

Resin WebSockets

我個人的選擇是碼頭,因爲它使用起來非常簡單,我已經用它在幾個項目中的嵌入式服務器被。

也有一些像AtmospherejWebSocket塊新的孩子,但對於服務器,我寧願去一個成熟的解決方案。 Jetty和Resin也是通用的Servlet服務器,因此您可以使用一種產品滿足您的所有服務需求。

+1

還有一個選擇:http://activemq.apache.org/websockets.html – 2010-10-23 12:09:22

+0

這些可以部署在tomcat上嗎?我需要一個跨容器庫。 – Jus12 2014-10-24 05:49:38

+3

@Peter Knego [Jetty WebSockets]的鏈接(http://blogs.webtide.com/gregw/entry/jetty_websocket_server)和[Resin WebSockets](http://caucho.com/resin-4.0/examples/websocket- java /)你已經提供了_404 - 頁面未找到_錯誤。 – Visruth 2014-11-08 07:02:26

6

僅供參考,大氣的樹脂,GlassFish和碼頭上運行。通過在Websocket服務器中爲您提供WebSocket可移植性,您可以免於被一臺服務器卡住。它還提供了一個客戶端庫,可以在瀏覽器不支持websocket的情況下選擇最佳的傳輸方式。所以你不能比較大氣與碼頭或Rsin

0

跟隨我的博客。我將在不久的將來在某個時候發佈。整個過程中一直強調輕量級 - 但速度也很快。我不知道它會如何加速到更高的負載。但是我一直在用相對較低的負載運行一段時間的演示,而且我已經運行良好。 (我會在以後測試更重的負載,並確保它可以被憋足了。)

http://highlevellogic.blogspot.com/2011/09/websocket-server-demonstration_26.html

0

如果您正在尋找周邊信息管理,用戶組(「房間」),和數據同步(「共享變量」)的基礎設施,你可能要考慮聯盟平臺:

http://www.unionplatform.com

[完全公開:我是Union的聯合創建者之一]

0

爲什麼不直接在JMS等開放標準上編寫應用程序,並讓客戶端作爲消息客戶端坐在JMS總線上? websockets的重點在於直接將任何本地TCP協議引入客戶端,而不是將其從後端轉換爲http請求/響應。

您的後端服務會與ActiveMQ等JMS代理進行通信,您的客戶端會通過JavaScript API在瀏覽器中發佈AMQP,該API類似於Java中的JMS API。您需要的只是一個websocket網關,例如Kaazing擁有這樣的網關,它所做的只是通過websockets將您的JMS TCP流量發送到Web客戶端。他們還提供扇出功能,以便不會超載您的JMS總線,即您只需使用少數幾個連接到代理來卸載一百萬瀏覽器客戶端連接。

底線是你不需要將自己綁定到任何特定的平臺。堅持標準,這樣,當環境發生變化時,您可以百分之百自由地更換組件。

3

也許你應該試試Bristleback Server?使用Bristleback,你可以選擇幾種WebSocket引擎,比如Jetty,Netty和Tomcat。您可以擁有獨立的服務器以及使用WebSockets(Jetty和Tomcat 7)的Web應用程序。鋼背獸使用Spring框架。如果您已經使用了Struts,Stripes或Play!等Web框架,那麼您將很容易開始。當然,Bristleback擁有自己的JavaScript客戶端庫,可以更輕鬆地進行開發。

完全披露:我是Bristleback Server的共同創造者之一。

+3

我認爲完全披露是爲了 – raam86 2012-09-30 23:14:07

3

我還將vert.x添加到列表中。它可以服務器Websockets和SockJS(當瀏覽器不支持它們時,websocket仿真)。

更新:
未啓用http://undertow.io還支持websockets。

4

雖然我非常重視JWebsockets和Autobahn的實現,但我更喜歡Atmosphere。

Ramp-Up :: Ramp-Up time is low。 Francois Arcand在測試和示例方面投入了大量精力,幫助每個人快速獲得勝利。 (我不知道爲什麼他能夠這麼快就我上升的任何建築的問題作出迴應。令人印象深刻。)

維護的角度 :: 對我來說,維護是根本,如果一個軟件超越主要版本1.0 0.0。該項目保持在Maven-POM的最高級別,且層次結構合理。它可以防止庫不兼容。圖書館是在正確的水平參考。這樣做很好。

技術/功能觀 :: 它提供了一個Java SE客戶端庫(wasync)即可以做本地的WebSocket通信(的onMessage),或建立在新澤西州的REST的註釋(@路徑)。隨後,它使得維護一個開放的連接以及流行的遠程過程調用(RPC)範例的好處變得簡單。合併這兩種範式是一種常見的嘗試。另請參閱http://wamp.ws/,它將採用相同的方法。此外,該庫還提供了建立QoS屬性,如健壯性(例如客戶端斷開連接)和可靠性(緩存未傳送的消息)。對於專業軟件來說,這非常棒。