0

私はApache Tomcat 7 ( JSPおよびサーブレット) を使用しています。私のアプリケーションでは、サーバーからクライアントにいくつかのメッセージを送信する必要があります。以下、私が取り組んでいることを少し説明します。

簡単な説明:ユーザーがインターネットに接続するたびにログインしていない場合、アプリケーションはログインページを表示します。ユーザーが正常にログインし、残り時間が終了したら、クライアントに残り時間 (たとえば、過去数分) をメッセージで送信する必要があります。特定の時間に広告ポップアップを開くことも、別の要件になる場合があります。

私は今についてですJMSが、それが私のシナリオにどれほど適しているかわかりません。私は他の投稿も読みました.WebSocketもオプションになる可能性があります。

CentOS 6.2でサーバーを実行しています。

質問:このシナリオについて、 Javaテクノロジでどのように処理するかについて、何か考えはありますか? 他のアイデアがあれば、遠慮なく公開してください。

NB JavaScriptPHPに関連する SO の質問に対する適切な回答を見つけました。特にJava技術でこの問題を解決する方法に興味があります。

4

3 に答える 3

2

http://jwebsocket.org/ おそらくこれはあなたのニーズに合っています。

于 2012-04-20T12:53:15.643 に答える
1

Java でソリューションを実装するというあなたの強迫観念が理解できません。有効なソリューションは、さまざまなサーバーサイド言語間で移植可能でなければなりません。ただし、同期的なユーザー主導の対話なしで終了が発生する場合は、ここで処理しようとしてサーバーに負荷がかかるだけです。誰かにコードを書いてもらいたいなら、ここは適切なフォーラムではありません。

私は今、JMS....CentOS 6.2についてです。

ここではあまり役に立ちません。

私たちが本当に知る必要があるのは、あなたが何を意味するかです:

ユーザーが正常にログインした後、彼の時間は終了します

(人がいつ死ぬかを予測するソフトウェアを書いていない限り、セッション時間が終了することを意味していると思います)。

セッションがいつ終了するかをどのように判断しますか?

  1. 1ページあたりの時間制限ですか?
  2. ログインしてから一定時間ですか?
  3. セッションがJavaによってガベージコレクションされたときですか?

1 の場合、これを実現する最も簡単な方法は、javascript を使用してページにタイムアウトを設定することです (ユーザーが新しい画面に移動すると、タイムアウトは破棄されます)。

setTimeout(function() {
    alert('5 minutes has expired since you got here - about to be logged out');
}, (300000)); // 5 minutes

2 番目のケースでは、引き続き上記の方法を使用しますが、サーバーで既に費やされた時間だけ JavaScript のタイムアウトを減らします (Java を使用して JavaScript を作成するか、ログイン時に JavaScript タイムスタンプを含むCookie をドロップします)。

3 番目のケースでは、ユーザーがいつログアウトされるかを知る方法はまったくありません。

于 2012-04-20T13:18:33.990 に答える
1

サーバーからクライアントへの HTTP 接続を開始することはできません。1 つの解決策は、WebSocket/Comet Framework を使用することです。残念ながら、Websocket は今のところ (サーバー + ブラウザー) 広く普及していません。フレームワークを使用して「ギャップ」を埋めることをお勧めします: https://github.com/Atmosphere/atmosphere

于 2012-04-20T12:55:52.523 に答える