低負荷のシンプルなサーバーを作りたい。目標は、いくつかのjavascriptクライアントに、WebSocketを介してJavaで実装された機能にアクセスできるようにすることです。そのために使用する最適なライブラリを探します。代替案-jWebSocket-桟橋-網状最良のものは何ですか?それとも他のものですか?
前もって感謝します
jWebSocketにはSSLを含むJetty 8.0エンジンが含まれるようになり、その上に多くの便利な機能が含まれています。クロスブラウザおよびクロスプラットフォーム互換のクライアントに、さらに多くのモバイルアプリを提供します。 Android、Symbian、およびBlackBerryで。サーバーはプラグインで簡単に拡張でき、既に多くのプラグインが含まれています(例:認証/自動化、JDBC、SMTP、XMPP/Jabber、RPC、Twitter、ファイル共有、チャットなど)。チェックしてみてください... http://jwebsocket.org 。あなたのフィードバックを楽しみにしています。
よろしくアレックス
実績のあるJavaサーブレットサーバー:JettyまたはResin。どちらもWebSocketを処理するように拡張されています。
私が個人的に選択したのはJettyで、これは非常に使いやすいため、いくつかのプロジェクトで組み込みサーバーとして使用してきました。
Atmosphere や jWebSocket のような新しい子供もいますが、サーバーの場合は実績のあるソリューションを使用することを好みます。 JettyとResinは汎用のサーブレットサーバーでもあるため、1つの製品ですべてのサービスニーズに対応できます。
PlayFramework! は、他の非常に良いオプションです。
参考までに、AtmosphereはResin、GlassFish、Jettyの上で動作します。 Atmosphereは、Websocketサーバー間でWebsocketの移植性を提供することにより、1つのサーバーに縛られないようにします。また、websocketがブラウザーでサポートされていない場合に最適なトランスポートを選択できるクライアントライブラリも提供します。そのため、AtmosphereとJettyまたはRsinを比較することはできません
Atmosphere を見てください。 記事はこちら ウェブソケットと雰囲気について。
私はJWebsocketとAutobahnの実装を大事にしていますが、Atmosphereの方が好きです。
Ramp-Up:: Ramp-Up time is low。フランソワ・アルカンドは、テストと例に多くの努力を注ぎ、誰もが迅速な勝利を達成するのを助けました。 (そして、私が立ち上がったアーキテクチャの質問に彼がなぜこんなに迅速に応答できるのか、私には見当もつかない。印象的だ。)
Maintenance Perspective::私にとって、ソフトウェアがメジャーリリースバージョン1.0.0を超えている場合、保守性は基本です。プロジェクトは、適切に構築された階層を持つ最上位のMaven-POMレベルで維持されます。ライブラリの非互換性を防ぎます。ライブラリは正しいレベルの参照です。それはよくできています。
技術的/機能的視点:: Java SEクライアントライブラリ(wasync)を提供し、ネイティブwebsocket通信を行うことができます(onMessage)またはJersey RESTアノテーション(@Path)でビルドします。これにより、サブスクリプションと一般的なリモートプロシージャコール(RPC)のオープン接続を維持できるという利点が得られます。 )パラダイム:これら2つのパラダイムをマージすることは一般的な試みです- http://wamp.ws/ も参照してください。 (クライアントが切断した場合など)および信頼性(未配信メッセージのキャッシュ)これは、プロのソフトウェアが利用するのに最適です。
リストに vert.x も追加します。 WebsocketとSockJS(ブラウザがサポートしていない場合のwebsocketエミュレーション)をサーバーにできます。
更新:
Undertow http://undertow.io はwebsocketもサポートしています。
たぶんあなたは Bristleback Server ? Bristlebackを使用すると、Jetty、Netty、TomcatなどのいくつかのWebSocketエンジンから選択できます。 WebSocket(JettyおよびTomcat 7)を使用するWebアプリケーションだけでなく、スタンドアロンサーバーも使用できます。 BristlebackはSpring Frameworkを使用しています。 Struts、Stripes、Play!などのWebフレームワークを使用したことがある場合は、簡単に開始できます。もちろん、Bristlebackには独自のJavaScriptクライアントライブラリがあり、開発がさらに容易になります。
完全な開示:私はBristleback Serverの共同作成者の1人です。
JMSのようなオープンスタンダードでアプリケーションを作成し、クライアントがメッセージクライアントとしてJMSバスに座ってみませんか? websocketの重要なポイントは、ネイティブのTCPプロトコルをバックエンドからhttp要求/応答に変換するのではなく、クライアントに直接渡すことです。
バックエンドサービスはActiveMQなどのJMSブローカーと通信し、クライアントはJavaのJMS APIのように見えるJavascript APIを介してブラウザーでAMQPを使用します。そのために必要なのはWebSocketゲートウェイだけです。たとえば、Kaazingにはそのようなゲートウェイがあり、JMS TCPトラフィックをWebSocket経由でWebクライアントにルーティングします。ファンアウトも提供します。 JMSバスを過負荷にしないようにします。つまり、ブローカーへの少数の接続を使用して、100万のブラウザークライアント接続をオフロードします。
肝心なのは、特定のプラットフォームに縛られる必要がないということです。環境の変化に応じてコンポーネントを100%自由に交換できるように、標準に準拠してください。
私のブログをフォローしてください。近い将来にリリースする準備ができています。軽量化は全体を通して強調されてきましたが、高速でもあります。それがどれほど高い負荷に達するかはまだわかりません。しかし、私は比較的低負荷で今しばらくデモを実行してきました。 (後でより重い負荷をテストし、それが増加することを確認します。)
http://highlevellogic.blogspot.com/2011/09/websocket-server-demonstration_26.html
メッセージ管理、ユーザーグループ化(「部屋」)、およびデータ同期(「共有変数」)に関連するインフラストラクチャを探している場合は、Unionプラットフォームを検討することをお勧めします。
[完全な開示:私は連合の共同作成者の1人です]