19

現在、Spring3.1とHibernate4を使用するWebアプリに取り組んでいます。

要件に応じて、FacebookのようにJSPページにプッシュ通知を実装したいと思います。何か提案があれば、互換性のあるブラウザとそのバージョンもリストしてください。

4

7 に答える 7

24

JDK 7 にアップグレードできる場合、または JDK 7 を使用している場合は、 Vert.x Vertx.ioを使用することをお勧めします。クライアント側で Sockjs を使用してください。Vert.x には完全な sockjs サーバー実装があります。これを実装する方法を提案します。残りはドキュメントを参照してください。

サーバーの実装は次のようになります

    Vertx vertx = Vertx.newVertx();
    EventBus eventBus = vertx.eventBus()
    HttpServer server = vertx.createHttpServer();
    JsonArray permitted = new JsonArray();
    permitted.add(new JsonObject());
    SockJSServer sockJSServer = new DefaultSockJSServer(vertx, server);
    sockJSServer.bridge(new JsonObject().putString("prefix", "/pusher"), permitted, permitted);
    server.listen(<some port>);

クライアント側では、ドキュメントの読み込み時にハンドラーを登録します

 function () {
if (!eb) {
  eb = new vertx.EventBus("http://<your_host>:<your_port>/pusher");

  eb.onopen = function() {
   console.log("connected")
  };

  eb.onclose = function() {
    console.log("Not connected");
    eb = null;
  };
}

}

次に、ハンドラーを任意のアドレスに登録できます。ここのアドレスは何でもかまいません。「AwesomeNotifications」であると仮定します。

function subscribe(address) {
if (eb) {
  eb.registerHandler(address, function(msg, replyTo) {
  console.log("Reply recieved")
          });

}
}

すべての設定が完了したら、先ほど作成したイベント バスを使用して、サーバーからこのアドレスにデータをプッシュできます。

eventBus.publish("AwesomeNotifications", new JsonObject(<some hashmap to serialize>))

お役に立てれば

于 2013-02-03T16:09:45.703 に答える
13

HTMl5サーバー送信オプションを使用できます。ここで詳細を取得できます

サーバー-送信オプション:

http://www.w3schools.com/html/html5_serversentevents.asp

サーバー用のJavaservelt-送信:

Javaサーブレットとサーバーがイベントを送信しました

チュートリアル:

http://peaktechie.blogspot.in/2012/04/small-tutorial-on-html5-server-sent.html

HTML5でサポートされているブラウザ:

http://fmbip.com/litmus

于 2013-01-23T07:22:40.210 に答える
9

私は最近これを調べています。イベント ベースのアプローチは、単一ページの Web アプリを構築するのに非常に便利ですが、複数ページの Web アプリでも使用できます。

これを行うにはいくつかの方法があります。

  • ActiveMQ AJAX - ブラウザの JavaScript から JMS イベントを直接パブリッシュおよびサブスクライブします。これは非常に基本的なものであり、他のアプローチよりも余計なものはありませんが、単純であるため、a) 既に activemq を使用している場合、b) 抽象化の層があまり多くない場合、開始するのに適したベースになる可能性があります。
  • Atmosphere - イベントベースのフレームワークで、現在使用中の Web サーバーとブラウザに基づいて、最適な通信メカニズムを自動検出できます。IE6 に至るまで、さまざまなブラウザーと Web サーバーを完全にサポートする、非常に優れたフレームワークです。また、Spring MVC と Spring Integration で Atmosphere を使用する例もあります。
  • Cometd - jetty/hightide に基づく Bayeux プロトコルの実装 (最適な接続タイプを自動ネゴシエートするため). Jetty は継続をサポートする最初の Java Web サーバーであり、現在は最新のサーブレット仕様の一部となっています。Cometd は、Jetty を JS クライアント ライブラリでラップして、ブラウザーへの最適な接続メカニズムを自動検出します。
  • Vert.x - 上に構築できるイベント ベースのサーバー プラットフォーム。Vert.x の作成者が VMware を去ったとき、最近 Vert.x に関していくつかの論争がありましたが、VMware はプロジェクトを保持しました。バージョン 2 が Eclipse Foundation からリリースされるようです。非常に有望に見えますが、かなり低いレベルです。既存の Java Web アプリにプラグインするようなものではありません。
  • HTML5 EventSource - イベントをブラウザーに送信する標準ベースの方法。イベントをサーバーに送り返すメカニズムはありません。興味深いことですが、IE6、IE7、および IE8 のフォールバックを実装する必要があることを考えると、現時点では最良の選択ではないかもしれません。

最終的に、私は著者にとって、プロジェクトに統合する問題について、Atmosphere が明らかに最適だと思います。

編集:タイプミス

于 2013-02-05T08:51:19.127 に答える
7

これにはAtmosphereを使用しました。ブラウザでサポートされている場合は WebSocket を使用し、サポートされていない場合は適切にポーリングにフォールバックします。また、生活をシンプルにする素敵な jQuery プラグインもあります。

于 2013-01-23T16:58:32.740 に答える
1

ロングポーリング別名で行くことをお勧めしますComet。クライアントに乱数をスローするために使用しました。この質問を参照することもできます。

于 2013-02-05T08:49:04.247 に答える
0

パブリッシュ/サブスクライブ ベースのMQTTミドルウェアまたは XMPP プロトコルのいずれかを使用することをお勧めします。メッセージの小さなチャンクを送信する予定がある場合は、最も軽量な方法であるため、MQTT を使用するのが最適です。JavaScript を含む多くのクライアント ライブラリがあり、開発と管理が非常に簡単です。

于 2013-02-05T09:07:18.550 に答える
0

プッシュ通知をサポートするために長い間 XMPP を使用してきましたが、Ejabberサーバー (またはその他のもの) を維持することは非常に困難です。

また、実際にはクライアントとサーバーの実装を持つsocket.ioに移行しましたが、nodejs サーバーを維持して js をいじり始める必要があります。

また、1 つのプロジェクトでfayeをテストし、Ruby 環境で完全に動作します。

しかし、結局のところ、より良い解決策は、サーバーに埋め込むことができるライブラリ (java) を使用し、他のテクノロジを忘れることだと思います。Atmosphere、クライアントとサーバーでも良い解決策だと思います。

于 2013-02-05T09:42:01.043 に答える