現在、Spring 3.1とHibernate 4を使用するWebアプリに取り組んでいます。
要件に従って、JSPページにFacebookのようにプッシュ通知を実装したいと思います。提案がある場合は、互換性のあるブラウザとそのバージョンもリストしてください。
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>))
お役に立てれば
HTMl5サーバー送信オプションを使用できます。ここで詳細を取得できます
サーバー送信オプション:
http://www.w3schools.com/html/html5_serversentevents.asp
server-sendのJava servelt:
チュートリアル:
http://peaktechie.blogspot.in/2012/04/small-tutorial-on-html5-server-sent.html
HTML5でサポートされているブラウザ:
私は最近これを調べています。イベントベースのアプローチは、単一ページのWebアプリを構築するのに非常に効率的ですが、複数ページのWebアプリでも使用できます。
これを行う方法はいくつかあります。
筆者としては、筆者にとっては spring-mvc プロジェクトに統合する問題について考えると、明らかに大気が最適です。
編集:タイプミス
私は Atmosphere を使用してこれを行いました。ブラウザでサポートされている場合はWebSocketを使用し、サポートされていない場合はポーリングにうまくフォールバックします。彼らはまた、生活をシンプルにするための素敵なjQueryプラグインを持っています。
私の提案は、パブリッシュ/サブスクライブベースの [〜#〜] mqtt [〜#〜] ミドルウェアまたはXMPPプロトコルを使用することです。メッセージの小さなチャンクを送信することを計画している場合は、MQTTを使用するのが最も適切です。MQTTが最も軽量な方法だからです。 JavaScriptを含む多くのクライアントライブラリがあり、開発と管理が非常に簡単です。
プッシュ通知をサポートするために長い間XMPPを使用してきましたが、 Ejabber サーバー(または何でも)を維持することは非常に困難です。
また、実際にはクライアントとサーバーの実装がある socket.io に移動しましたが、nodejsサーバーを管理し、jsで遊ぶ必要があります。
私は faye も1つのプロジェクトでテストし、Ruby環境で完全に機能します。
しかし、最終的には、サーバーに埋め込むことができるライブラリを使用して(Java)、他のテクノロジを忘れることがより良い解決策であると思います Atmosphere はクライアントとサーバーの優れた解決策だと思いますまた。