ここでの問題は、ブラウザがステートレスであることです。あるページのHTML、CSS、およびJavaScriptは、別のページとは全く別のコンテキストで読み込まれます。したがって、プロセスが実行され続けても、データがロードされなくなるため、ページにデータを戻すことはできません。
ユーザーがページを変更してもUIが更新されているように思えます。これは、Cometを使用することで可能になります。
彗星の仕組みは、ブラウザからサーバーへのHTTPリクエストを開くことです。サーバーは、クライアントにプッシュバックする必要のあるデータがあるまで、その接続を開いたままにします。サーバーは準備が整うと、クライアントに応答を送信します。
このテクニックは、何かが変更されたときにNクライアントを新鮮なデータで更新するために一般的に使用されますが、これを使用して特定の要求から応答を切り離すことができます。つまり、サーバーに対して行われた要求が応答を受け取らないように、アプリケーションをセットアップすることができます。代わりに、サーバーは彗星接続を介して更新を渡します。
このようにすると、結果を計算した後でもリクエストを行った後にページを変更したクライアントがUIに更新を受け取ることが確実になります。
多くの主要なプラットフォームでは、Java、PHP、.NET、node.jsがサポートされています。
サポートを得ているもう1つの同様のテクニックはWebSocketsです。ただし、すべてのブラウザがこのテクニックをサポートしているわけではありません。まず、特定のプラットフォームでCometに関するいくつかの調査を行い、より具体的な質問があれば、ここで質問することができます。がんばろう!
ありがとうございました!私は彗星を見るだろう。このサイトは認証されたユーザー専用のサイトなので、私はおそらくセッションを使って状態の完全な感覚をシミュレートできると思っていました。 –
あなたが直面している問題は、データを取得するために新しいページで依頼する必要があることです。また、その結果を計算し直すプロセスをやり直したくないので、岩と堅い場所の間にくっついている。セッションがあっても、新しいページでは他のスレッドで何が起こっているのか分かりませんし、サーバーへの独自の要求にしかなりません。 Cometは、元の要求を行ったプロセスやページに関係なく、実際にデータをクライアントにプッシュすることで、サーバーのポーリングが不要であることを保証します。 – jmort253
私は、あなたの結果を計算し、それをキャッシュに保存し、次にキャッシュに保存されているものを単純に返す「データを渡す」リクエストという2つのプロセス、「クランチ・ナンバー」リクエストを持つこともできると思うが、データがいつ準備されているかを知るためにサーバーをポーリングする必要があるため、複雑でリソースが多くなります。この問題は、まさにCometが解決しようとしている問題です。 – jmort253