(57)【要約】【課題】サーバプッシュによる自動更新機能をもたない既成のＷｅｂアプリケーションを、そのソースコードに変更を加えずに、サーバプッシュを利用した自動更新を行うＷｅｂアプリケーションに変更することのできる中間システムおよびイベント駆動型サーバ拡張プログラムを提供する。【解決手段】中間システム３０は、ブラウザにより実現されるクライアント２０との間の通信において、既定リクエストを受信すると、受信したリクエストに対して、サーバプッシュによるデータ要求の発行を促す内容を記述したレスポンスを送信し、クライアント２０からレスポンスの内容に従うＬｏｎｇＰｏｌｌリクエストを受信して、クライアント２０に対し、サーバプッシュによる更新通知機能を提供する。【選択図】    図１
2010055560.tif 000002
【特許請求の範囲】
【請求項１】
サーバプッシュによる更新通知機能をもたない情報提供サーバと、このサーバに情報提供を要求する情報表示クライアントとの間に介在される中間システムであって、
前記中間システムは、前記クライアントとの間で通信を行うサーバ機能通信部と、前記サーバとの間で通信を行うブラウザ機能通信部と、前記ブラウザ機能通信部から受けたレスポンスを解析し編集して前記サーバ機能通信部に渡すレスポンス解析・編集機能部とを具備し、
前記サーバ機能通信部は、前記クライアントから受信したサーバプッシュに関係しない既定リクエストに対して、サーバプッシュによるデータ要求の発行を促す内容を記述したレスポンスを送信し、前記クライアントから前記レスポンスの内容に従うサーバプッシュを利用する内容を記述した特定リクエストを受信する通信手段を具備し、
前記ブラウザ機能通信部は、前記サーバ機能通信部が受信した既定リクエストを保存し、当該既定リクエストにより前記サーバに対してポーリング処理を実行する通信手段を具備し、
前記レスポンス解析・編集機能部は、前記サーバ機能通信部が受信した特定リクエストに従い、前記ブラウザ機能通信部に対して前記ポーリング処理を実行させ、当該処理において、ポーリングの周期毎に、受信したレスポンスを保存し、前回受信したレスポンスの内容と今回受信したレスポンスの内容とを比較して、レスポンスの内容が更新されたか否かを監視し、レスポンスの内容が更新されたとき、当該レスポンスの内容を編集し、編集したレスポンスを前記サーバ機能通信部からプッシュさせる処理手段を具備して、
前記クライアントに対し、サーバプッシュによる更新通知機能を提供することを特徴とする中間システム。
【請求項２】
前記レスポンスの内容を編集する処理には、前記クライアントに対してリロードを回避させる内容を記述する処理が含まれる請求項１に記載の中間システム。
【請求項３】
サーバプッシュによる更新通知機能をもたない情報提供サーバと、このサーバに情報提供を要求する情報表示クライアントとの間に介在される中間システムであって、
前記中間システムは、前記クライアントとの間で通信を行うサーバ機能通信部と、前記サーバとの間で通信を行うブラウザ機能通信部と、前記ブラウザ機能通信部から受けたレスポンスを解析し編集して前記サーバ機能通信部に渡すレスポンス解析・編集機能部とを具備し、
前記クライアントは、前記サーバ機能通信部からレスポンスの更新が通知されたとき、サーバプッシュに関係しない既定リクエストを前記サーバ機能通信部に送信し、前記サーバ機能通信部から更新されたレスポンスを受けたとき、当該レスポンスの内容に従いサーバプッシュを利用する内容を記述した特定レスポンスを前記サーバ機能通信部に送信する通信手段を具備し、
前記ブラウザ機能通信部は、前記サーバ機能通信部が受信した既定リクエストを保存し、当該既定リクエストにより前記サーバに対してポーリング処理を実行する通信手段を具備し、
前記レスポンス解析・編集機能部は、前記サーバ機能通信部が受信した前記特定レスポンスに従い、前記ブラウザ機能通信部に対して前記ポーリング処理を実行させ、当該処理の周期毎に、受信したレスポンスを保存し、前回受信したレスポンスの内容と今回受信したレスポンスの内容とを比較して、レスポンスの内容が更新されたか否かを監視し、レスポンスの内容が更新されたとき、当該レスポンスの内容を編集し、レスポンスの内容が更新されたことを前記サーバ機能通信部から前記クライアントに通知させた後、前記既定リクエストの受信を待って、前記編集したレスポンスを前記サーバ機能通信部からプッシュさせる一連の処理手段を具備して、
前記クライアントに対し、サーバプッシュによる表示の更新処理を行うことを特徴とする中間システム。
【請求項４】
前記ポーリング処理には、
前記比較の結果、レスポンスの内容が等しいとき、前記保存した既定リクエストを用いてポーリング処理を実行し、
前記内容が異なるとき、前記保存したレスポンスの内容を破棄して、前記サーバ機能通信部から前記クライアントに、レスポンスの内容が更新された旨の更新通知を送信させ、
前記保存したレスポンスの内容が破棄されているとき、前記新たなレスポンスを保存して、当該レスポンスの内容を編集し、前記サーバ機能通信部から前記クライアントに送信させる処理が含まれる請求項３に記載の中間システム。
【請求項５】
前記レスポンスの内容を編集する処理には、サーバプッシュによるデータ要求の発行を促す内容を記述する処理と、リロード機能を無効化するための内容を記述する処理が含まれる請求項４に記載の中間システム。
【請求項６】
サーバプッシュによる自動更新機能をもたないＷｅｂアプリケーションにより構成された情報提供サーバをイベント駆動型サーバとして機能させるためのサーバ拡張プログラムであって、
ブラウザからサーバプッシュに関係しない既定リクエストを受信し、当該既定リクエストを保存する機能と、
前記ブラウザから受信した前記既定リクエストに対して、サーバプッシュによるデータ要求の発行を促す内容を記述したレスポンスを前記ブラウザに送信する機能と、
前記ブラウザから前記レスポンスの内容に従うサーバプッシュを利用する内容を記述した特定リクエストを受信して、前記保存した既定リクエストによりポーリング処理を実行し、当該処理の周期毎に、受信したレスポンスを保存し、前回受信したレスポンスの内容と今回受信したレスポンスの内容とを比較して、レスポンスの内容を監視し、サーバ上でイベントが起こったか否かを周期的に確認する機能と、
前記レスポンスの内容が更新されたとき、当該レスポンスの内容を編集し、リロードを無効化するための内容を記述した編集後のレスポンスを前記ブラウザにプッシュする機能と、
をコンピュータに実現させるためのイベント駆動型サーバ拡張プログラム。
【請求項７】
サーバプッシュによる自動更新機能をもたないＷｅｂアプリケーションにより構成された情報提供サーバをイベント駆動型サーバとして機能させるためのサーバ拡張プログラムであって、
ブラウザから受信したサーバプッシュに関係しない既定リクエストを受信し、当該既定リクエストを保存する機能と、
サーバから受信したレスポンスを保存手段に保存する機能と、
前記既定リクエストを前記サーバに送信して、前記サーバからレスポンスを受信し、受信したレスポンスの内容を前記保存手段の保存内容と比較する機能と、
前記レスポンスの内容の比較の結果、レスポンスの内容が異なるとき、前記保存手段の内容を空データにし、前記ブラウザにレスポンスの内容が更新されたことを通知して、前記ブラウザから既定リクエストを受信する機能と、
前記レスポンスの内容の比較の結果、前記保存手段の保存内容が空データであるとき、前記受信したレスポンスを前記保存手段に保存して、前記受信したレスポンスの内容を編集し、サーバプッシュによるデータ要求の発行を促す内容を記述した編集後のレスポンスを前記ブラウザに送信して、前記ブラウザから前記編集後のレスポンスの内容に従うサーバプッシュを利用する内容を記述した特定リクエストを受信する機能と、
前記レスポンスの内容の比較の結果、レスポンスの内容が等しいとき、前記特定リクエストに従い、前記保存した既定リクエストによりポーリング処理を実行し、当該処理の周期毎に前記レスポンスの内容の比較機能による処理を実行して、サーバ上でイベントが起こったか否かを周期的に確認する機能と、
をコンピュータに実現させるためのイベント駆動型サーバ拡張プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報提供サーバと、このサーバに情報提供を要求する情報表示クライアントとの間に介在される中間システム、および同システムに適用されるイベント駆動型サーバ拡張プログラムに関する。
【背景技術】
【０００２】
近年、様々な情報がＷＷＷ（Wor1d Wide Web）を介して提供されている。ＷＷＷはサーバ（情報提供サーバ）とクライアント（情報表示クライアント）から構成されるインターネットを利用した分散型の情報提供／情報表示（情報閲覧）システムである。一般に、サーバはページと呼ばれる文書単位でクライアントヘ情報を提供する。このページはＨＴＭＬ（HyperText Markup Language）と呼ばれる形式のフォーマットで記述されているファイルである。クライアントは通常、ブラウザと呼ばれる情報表示（情報閲覧）用のソフトウェアを用いて実現されており、サーバにアクセスし、画像や音声などを含む文書を表示することができる。
【０００３】
ＷＷＷの一般的な使われ方は、ブラウザからサーバに表示したいページのアドレス（ＵＲＬと呼ばれる）を要求し、サーバはそのアドレスに対応するページをクライアントに返すというものである。ここで注意しなければならないのは、ブラウザから明示的な要求がない限り、サーバは何もしないということである。これは、サーバに蓄えてあるページが変更されても、ブラウザからは変更を即時に知ることができないとことを意味する。このようなブラウザを起点とした通信形態をプル型通信と称している。
【０００４】
サーバにあるページが更新されたことをブラウザ側で迅速に知るためには、ブラウザ側で常にサーバのページが更新されたかどうかを定期的にアクセスする必要がある。サーバ側のページが時々刻々変更されるようなページをブラウザで表示している場合、サーバ側でページが更新されてもブラウザの画面は変わらない。サーバ側で更新したページをブラウザ側の画面に反映させるためには、ユーザが明示的に、ブラウザ（の情報表示画面）に付加されているリロードボタンなどを押す（リロードを行う）ことで、サーバに明示的に再アクセスしなければならない。
【０００５】
このようなプル型通信の問題を解決するための技術として、Ｃｏｍｅｔを利用したＷｅｂアプリケーション技術が存在する。Ｃｏｍｅｔは、Ｗｅｂアプリケーション上でサーバプッシュを実現する。上記した一般的なクライアントプルがブラウザを起点にサーバ・クライアント間のやりとりを行うのに対し、サーバプッシュではサーバを起点にサーバ・クライアント間のやりとりを行う。このＣｏｍｅｔを利用したＷｅｂアプリケーションでは、クライアントからの要求（リクエスト）に対して、サーバが応答（レスポンス）を保留し、サーバ上で何らかのイベントが発生したときにレスポンスを返す。これによりクライアントからサーバへリクエストすることなくサーバで発生したイベントを即時にクライアントに返信することができる。
【０００６】
Ｗｅｂサーバ上のデータが更新され、ブラウザがＷｅｂサーバ上の最新のデータを得る方法には、Ｃｏｍｅｔを利用して、Ｗｅｂサーバがブラウザに最新のデータをプッシュする方法と、ブラウザがＷｅｂサーバのデータをリロード（再読込）する方法がある。
【０００７】
ブラウザがリロードをする方法は、ＨＴＭＬファイルにリロードを行うためのタグやＪａｖａ（登録商標）Ｓｃｒｉｐｔを記述する方法と、上述したようにユーザがブラウザのリロードボタンを押下する方法がある。ブラウザがリロードする方法には、最新のデータをプッシュする方法よりも通信量が多くなるという課題と、Ｗｅｂサーバの情報が更新されてからブラウザが最新情報を得るまでにタイムラグがあるという課題がある。
【０００８】
サーバプッシュによる自動更新機能をもたない既成のＷｅｂアプリケーションを、Ｃｏｍｅｔによるサーバプッシュを利用した自動更新を行うＷｅｂアプリケーションに変更するには、そのソースコードに変更を加える必要があるという問題があった。
【０００９】
上記したＷｅｂアプリケーションの関連技術として、従来では、クライアントにおける初回操作の後、クライアント側の操作とは無関係に、一定間隔でリクエストデータの送受信を繰り返すことでセッションの処理を行うセッション管理技術が存在した。
【特許文献１】特開２００３−２３３５８５号公報
【非特許文献１】Ｗｉｋｉｐｅｄｉａ（ｈｔｔｐ：／／ｊａ．ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／Ｃｏｍｅｔ）
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上述したように、サーバプッシュによる自動更新機能をもたない既成のＷｅｂアプリケーションを、Ｃｏｍｅｔによるサーバプッシュを利用した自動更新を行うＷｅｂアプリケーションに変更するには、そのソースコードに変更を加える必要があるという問題があった。
【００１１】
本発明は上記問題に鑑みなされたもので、サーバプッシュによる自動更新機能をもたない既成のＷｅｂアプリケーションを、そのソースコードに変更を加えずに、サーバプッシュを利用した自動更新を行うＷｅｂアプリケーションに変更することのできる中間システムおよびイベント駆動型サーバ拡張プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明は、サーバプッシュによる更新通知機能をもたない情報提供サーバと、このサーバに情報提供を要求する情報表示クライアントとの間に介在される中間システムであって、前記中間システムは、前記クライアントとの間で通信を行うサーバ機能通信部と、前記サーバとの間で通信を行うブラウザ機能通信部と、前記ブラウザ機能通信部から受けたレスポンスを解析し編集して前記サーバ機能通信部に渡すレスポンス解析・編集機能部とを具備し、前記サーバ機能通信部は、前記クライアントから受信したサーバプッシュに関係しない既定リクエストに対して、サーバプッシュによるデータ要求の発行を促す内容を記述したレスポンスを送信し、前記クライアントから前記レスポンスの内容に従うサーバプッシュを利用する内容を記述した特定リクエストを受信する通信手段を具備し、前記ブラウザ機能通信部は、前記サーバ機能通信部が受信した既定リクエストを保存し、当該既定リクエストにより前記サーバに対してポーリング処理を実行する通信手段を具備し、前記レスポンス解析・編集機能部は、前記サーバ機能通信部が受信した特定リクエストに従い、前記ブラウザ機能通信部に対して前記ポーリング処理を実行させ、当該処理において、ポーリングの周期毎に、受信したレスポンスを保存し、前回受信したレスポンスの内容と今回受信したレスポンスの内容とを比較して、レスポンスの内容が更新されたか否かを監視し、レスポンスの内容が更新されたとき、当該レスポンスの内容を編集し、編集したレスポンスを前記サーバ機能通信部からプッシュさせる処理手段を具備して、前記クライアントに対し、サーバプッシュによる更新通知機能を提供することを特徴とする。
【００１３】
また、本発明は、サーバプッシュによる更新通知機能をもたない情報提供サーバと、このサーバに情報提供を要求する情報表示クライアントとの間に介在される中間システムであって、前記中間システムは、前記クライアントとの間で通信を行うサーバ機能通信部と、前記サーバとの間で通信を行うブラウザ機能通信部と、前記ブラウザ機能通信部から受けたレスポンスを解析し編集して前記サーバ機能通信部に渡すレスポンス解析・編集機能部とを具備し、前記クライアントは、前記サーバ機能通信部からレスポンスの更新が通知されたとき、サーバプッシュに関係しない既定リクエストを前記サーバ機能通信部に送信し、前記サーバ機能通信部から更新されたレスポンスを受けたとき、当該レスポンスの内容に従いサーバプッシュを利用する内容を記述した特定レスポンスを前記サーバ機能通信部に送信する通信手段を具備し、前記ブラウザ機能通信部は、前記サーバ機能通信部が受信した既定リクエストを保存し、当該既定リクエストにより前記サーバに対してポーリング処理を実行する通信手段を具備し、前記レスポンス解析・編集機能部は、前記サーバ機能通信部が受信した前記特定レスポンスに従い、前記ブラウザ機能通信部に対して前記ポーリング処理を実行させ、当該処理の周期毎に、受信したレスポンスを保存し、前回受信したレスポンスの内容と今回受信したレスポンスの内容とを比較して、レスポンスの内容が更新されたか否かを監視し、レスポンスの内容が更新されたとき、当該レスポンスの内容を編集し、レスポンスの内容が更新されたことを前記サーバ機能通信部から前記クライアントに通知させた後、前記既定リクエストの受信を待って、前記編集したレスポンスを前記サーバ機能通信部からプッシュさせる一連の処理手段を具備して、前記クライアントに対し、サーバプッシュによる表示の更新処理を行うことを特徴とする。
【００１４】
また、本発明は、サーバプッシュによる自動更新機能をもたないＷｅｂアプリケーションにより構成された情報提供サーバをイベント駆動型サーバとして機能させるためのサーバ拡張プログラムであって、ブラウザからサーバプッシュに関係しない既定リクエストを受信し、当該既定リクエストを保存する機能と、前記ブラウザから受信した前記既定リクエストに対して、サーバプッシュによるデータ要求の発行を促す内容を記述したレスポンスを前記ブラウザに送信する機能と、前記ブラウザから前記レスポンスの内容に従うサーバプッシュを利用する内容を記述した特定リクエストを受信して、前記保存した既定リクエストによりポーリング処理を実行し、当該処理の周期毎に、受信したレスポンスを保存し、前回受信したレスポンスの内容と今回受信したレスポンスの内容とを比較して、レスポンスの内容を監視し、サーバ上でイベントが起こったか否かを周期的に確認する機能と、前記レスポンスの内容が更新されたとき、当該レスポンスの内容を編集し、リロードを無効化するための内容を記述した編集後のレスポンスを前記ブラウザにプッシュする機能とをコンピュータに実現させることを特徴とする。
【００１５】
また、本発明は、サーバプッシュによる自動更新機能をもたないＷｅｂアプリケーションにより構成された情報提供サーバをイベント駆動型サーバとして機能させるためのサーバ拡張プログラムであって、ブラウザから受信したサーバプッシュに関係しない既定リクエストを受信し、当該既定リクエストを保存する機能と、サーバから受信したレスポンスを保存手段に保存する機能と、前記既定リクエストを前記サーバに送信して、前記サーバからレスポンスを受信し、受信したレスポンスの内容を前記保存手段の保存内容と比較する機能と、前記レスポンスの内容の比較の結果、レスポンスの内容が異なるとき、前記保存手段の内容を空データにし、前記ブラウザにレスポンスの内容が更新されたことを通知して、前記ブラウザから既定リクエストを受信する機能と、前記レスポンスの内容の比較の結果、前記保存手段の保存内容が空データであるとき、前記受信したレスポンスを前記保存手段に保存して、前記受信したレスポンスの内容を編集し、サーバプッシュによるデータ要求の発行を促す内容を記述した編集後のレスポンスを前記ブラウザに送信して、前記ブラウザから前記編集後のレスポンスの内容に従うサーバプッシュを利用する内容を記述した特定リクエストを受信する機能と、前記レスポンスの内容の比較の結果、レスポンスの内容が等しいとき、前記特定リクエストに従い、前記保存した既定リクエストによりポーリング処理を実行し、当該処理の周期毎に前記レスポンスの内容の比較機能による処理を実行して、サーバ上でイベントが起こったか否かを周期的に確認する機能とをコンピュータに実現させることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、サーバプッシュによる自動更新機能をもたない既成のＷｅｂアプリケーションを、そのソースコードに変更を加えずに、サーバプッシュを利用した自動更新を行うＷｅｂアプリケーションに変更することができる。
【発明を実施するための最良の形態】
【００１７】
以下図面を参照して本発明の実施形態を説明する。なお、この実施形態では、利用するＣｏｍｅｔ機能として、クライアント側がデータ取得の都度、再接続する、ロングポーリングと称される機能を利用し、サーバプッシュを行うためのリクエスト（サーバプッシュを利用する内容を記述した特定リクエスト）をＬｏｎｇＰｏｌｌリクエストと称し、サーバプッシュを行うことを目的としないリクエスト（サーバプッシュに関係しない既定リクエスト）と区別する。
【００１８】
本発明の第１実施形態に係る中間システムの構成を図１に示す。  
図１に示すように、本発明の第１実施形態に係る中間システム３０は、サーバプッシュによる更新通知機能をもたない情報提供サーバ（以下、単にサーバと称す）１０と、このサーバ１０に情報提供を要求する情報表示クライアント（以下、単にクライアントと称す）２０との間に介在される。サーバ１０はサーバプッシュによる更新通知機能をもたない既成のＷｅｂアプリケーションにより構成され、リクエストの受信機能とレスポンスの送信機能を実現するサーバ通信部１１を備える。クライアント２０はＷｅｂページの閲覧機能を実現するブラウザにより構成され、リクエストの送信機能とレスポンスの受信機能を実現するクライアント通信部２１を備える。
【００１９】
中間システム３０は、サーバ通信部１１との間で通信を行うブラウザ機能通信部３１と、クライアント通信部２１との間で通信を行うサーバ機能通信部３２と、ブラウザ機能通信部３１から受けたレスポンスを解析し編集してサーバ機能通信部３２に渡すレスポンス解析・編集機能部３５とを具備する。
【００２０】
ブラウザ機能通信部３１は、サーバ機能通信部３２が受信したリクエスト（既定リクエスト）を保存するリクエスト保存部３３を備え、リクエスト保存部３３からリクエストの内容を取り出して、サーバ通信部１１に送信し、サーバ通信部１１からレスポンスを受信する機能と、後述するレスポンス比較部にレスポンスの内容を渡す機能を有して、リクエスト保存部３３から取り出したリクエストにより、サーバ通信部１１に対して定期的なリロードの繰り返しによるポーリング処理を実行する処理機能を実現している。
【００２１】
サーバ機能通信部３２は、クライアント通信部２１から受信したリクエスト（既定リクエスト）に対して、サーバプッシュによるデータ要求の発行を促す内容を記述したレスポンスを送信し、クライアント通信部２１から上記レスポンスの内容に従うＬｏｎｇＰｏｌｌリクエストを受信する通信手段を具備する。このサーバ機能通信部３２は、クライアント通信部２１からリクエストを受信する機能と、リクエスト保存部３３にリクエストの内容を渡す機能と、クライアント通信部２１に後述するプッシュデータ表示機能を有するレスポンスを送信する機能と、後述するレスポンス編集部からレスポンスの内容を受け取る機能と、クライアント通信部２１にレスポンスをプッシュする機能を有する。ここで上記したプッシュデータ表示機能を有するレスポンスを送信する機能は、上記記述内容のレスポンスをクライアント通信部２１が受信したとき、クライアント通信部２１からサーバ機能通信部３２にＬｏｎｇＰｏｌｌリクエストを送信させるためのレスポンスの送信機能と、サーバ機能通信部３２からクライアント機能通信部３１にデータがプッシュされて、ブラウザにデータが表示されたとき、クライアント通信部２１からサーバ機能通信部３２にＬｏｎｇＰｏｌｌリクエストを送信させるためのレスポンスの送信機能である。
【００２２】
リクエスト保存部３３は、サーバ機能通信部３２がリクエストを受信する都度、そのリクエストの内容を受け取り、次に受信したリクエストの内容と比較するまで保存する機能と、ブラウザ機能通信部３１にリクエストの内容を渡す機能を有する。
【００２３】
レスポンス解析・編集機能部３５は、レスポンス保存部３６と、レスポンス比較部３７と、レスポンス編集部３８とを具備して、サーバ機能通信部３２が受信したＬｏｎｇＰｏｌｌリクエストに従い、ブラウザ機能通信部３１に対して、サーバ１０上でイベントが起こった（発生した）か否かを周期的に確認させる、所謂、ポーリング処理を実行し、レスポンスの内容が更新されたことを検出して、当該レスポンスの内容を編集し、編集したレスポンスをサーバ機能通信部３２からプッシュさせる処理機能を実現している。
【００２４】
レスポンス保存部３６は、レスポンス比較部３７からレスポンスの内容を受け取り、保存する機能と、保存したレスポンスの内容をレスポンス比較部３７に渡す機能を有して、ブラウザ機能通信部３１がポーリング処理において受信したレスポンスを受信周期に合わせて一定期間保存し、レスポンス比較部３７に渡す機能を有する。ただし、レスポンスの内容を保存していない場合、レスポンス比較部３７に空のデータを渡す。
【００２５】
レスポンス比較部３７は、ブラウザ機能通信部３１からレスポンスの内容を受け取る機能と、受け取ったレスポンスの内容をレスポンス保存部３６に渡す機能と、レスポンス保存部３６からレスポンスを取り出す機能と、今回受信したレスポンスとレスポンス保存部３６に保存されている前回受信したレスポンスとの内容を比較する機能と、レスポンスの内容をレスポンス編集部３８に渡す機能を有して、ブラウザ機能通信部３１がレスポンスを受信する都度、ブラウザ機能通信部３１が今回受信したレスポンスの内容と、レスポンス保存部３６に保存された、前回受信したレスポンスの内容とを比較し、レスポンスの内容が更新されたか否かを監視して、レスポンスの内容が更新されたとき、当該更新されたレスポンスの内容をレスポンス編集部３８に渡す処理機能を実現している。
【００２６】
レスポンス編集部３８は、レスポンス比較部３７からレスポンスの内容を受け取る機能と、レスポンスの内容を編集する機能と、レスポンスの内容をサーバ機能通信部１１に渡す機能を有して、レスポンス比較部３７から受けた、更新されたレスポンスの内容を編集し、編集したレスポンスをサーバ機能通信部３２に渡し、サーバ機能通信部３２からプッシュさせる更新通知の処理機能を実現している。ただし、この第１実施形態での編集内容は、クライアント通信部２１が定期的なリロードを実行しないようにすることである。
【００２７】
本発明の第１実施形態に係る中間システム３０を含む通信システム全体の通信手順を図２に示し、システム全体の処理手順を図３に示している。
【００２８】
ここで上記図１乃至図３を参照して本発明の第１実施形態に係る中間システムの動作並びにイベント駆動型サーバ拡張プログラムの処理手順について説明する。
【００２９】
まず、図２に示す通信シーケンスを参照して、本発明の第１実施形態に係る中間システム３０の概略的な動作を説明する。中間システム３０は、ブラウザにより実現されるクライアント２０との間の通信において、リクエスト（既定リクエスト）を受信すると、受信したリクエストに対して、サーバプッシュによるデータ要求の発行を促す内容を記述したレスポンスを送信し、クライアント（ブラウザ）２０から上記レスポンスの内容に従うＬｏｎｇＰｏｌｌリクエストを受信する。一方、既成Ｗｅｂアプリケーションにより実現されるサーバ１０との間の通信に於いて、クライアント２０から受信したリクエスト（既定リクエスト）を保存し、このリクエストを用いて定期的なリロードの繰り返しによるポーリング処理を実行する。このポーリング処理において、ループの周期毎に、受信したレスポンスを保存し、前回受信したレスポンスの内容と今回受信したレスポンスの内容とを比較して、レスポンスの内容が更新されたか否かを監視する。レスポンスの内容が更新されたことを検知すると、当該レスポンスの内容を編集し、編集したレスポンスをクライアント（ブラウザ）２０にプッシュする。クライアント（ブラウザ）２０は、更新内容を受信し表示すると、ＬｏｎｇＰｏｌｌリクエストを中間システム３０に送信する。中間システム３０はＬｏｎｇＰｏｌｌリクエストを受信すると、上記したポーリング処理によるレスポンスの内容が更新されたか否かの監視を行う。このようにして、クライアントに対し、サーバプッシュによる更新通知機能を提供する。
【００３０】
続いて図３に示すフローチャートを参照して、本発明の第１実施形態に係る中間システム３０の動作を説明する。図３に示す処理はサーバ機能通信部６２がクライアント通信部５１からリクエスト（既定リクエスト）を受信することによって実行される。
【００３１】
ステップＳ１１において、サーバ機能通信部３２は、クライアント通信部２１からリクエスト（既定リクエスト）を受信し、受信したリクエストの内容をリクエスト保存部３３に渡す。
【００３２】
ステップＳ１２において、サーバ機能通信部３２は、上記受信したリクエストに対し、プッシュデータ表示機能を有するレスポンス（サーバプッシュによるデータ要求の発行を促す内容を記述したレスポンス）を、クライアント通信部２１に送信する。クライアント通信部２１はこのレスポンスを受信すると、サーバ機能通信部３２にサーバプッシュを受信するためのＬｏｎｇＰｏｌｌリクエストを送信する。
【００３３】
ステップＳ１３において、リクエスト保存部３３は、上記ステップＳ１１においてサーバ機能通信部３２から受け取ったリクエストを保存する。
【００３４】
ステップＳ１４において、ブラウザ機能通信部３１は、リクエスト保存部３３が保存しているリクエストを取り出し、サーバ通信部１１に送信して、そのリクエストに対するレスポンスを受信し、受信したレスポンスの内容をレスポンス比較部３７に渡す。
【００３５】
ステップＳ１５において、レスポンス比較部３７は、レスポンス保存部３６が保存しているレスポンスの内容を取り出し、上記（ステップＳ）１４においてブラウザ機能通信部３１から受け取ったレスポンスの内容と比較する。比較した結果、両レスポンスの内容が異なる場合は、既成Ｗｅｂアプリケーションのデータが更新された場合である。この場合、レスポンス比較部３７は、ブラウザ機能通信部３１から受け取ったレスポンスの内容を、レスポンス保存部３６とレスポンス編集部３８に渡す。上記両レスポンスの内容が等しい場合は、上記ステップＳ１４の処理に戻り、サーバ通信部１１に対して定期的なリロードの繰り返しによるポーリング処理を実行する。ただし、レスポンス比較部３７がレスポンス保存部３６から空のデータを取り出したとき、レスポンス比較部３７は、ブラウザ機能通信部３１から受け取ったレスポンスの内容を、レスポンス保存部３６とレスポンス編集部３８に渡す。
【００３６】
ステップＳ１６において、レスポンス保存部３６は、上記ステップＳ１５において受け取ったレスポンスの内容を保存し、以前に保存していたレスポンスの内容を消去する。すなわち、レスポンス保存部３６は、レスポンス比較部３７の比較結果を待って、保存内容を更新する。
【００３７】
ステップＳ１７において、レスポンス編集部３８は、上記ステップＳ１５において受け取ったレスポンスの内容を編集する。編集内容は、リロード機能を無効化するための、リロードを行う記述の消去やコメントアウトすることである。
【００３８】
リロード機能は、ＨＴＭＬの
＜ＭＥＴＡ  ＨＴＴＰ−ＥＱＵＩＶ＝”Ｒｅｆｒｅｓｈ”  ｃｏｕｎｔｅｄ＝”５；ｈｔｔｐ：／／ｗｗｗ．ｘｘｘ．ｃｏ．ｊｐ／”＞タグや、ＪａｖａＳｃｒｉｐｔのｗｉｎｄｏｗ．ｌｏａｃａｔｉｏｎ．ｒｅｐｌａｃｅ（“ｈｔｔｐ：／／ｗｗｗ．ｘｘｘ．ｃｏ．ｊｐ”）関数などで記述されている。
【００３９】
レスポンス編集部３８は、レスポンスの編集を終えると、編集したレスポンスの内容をサーバ機能通信部３２に渡す。
【００４０】
ステップＳ１８において、サーバ機能通信部３２は、上記ステップＳ１７において受け取ったレスポンス内容をクライアント通信部２１にプッシュする。
【００４１】
ステップＳ１９において、クライアント通信部２１は、上記ステップＳ１８においてプッシュされたレスポンスの内容を画面に表示し、表示画面を更新する。さらにクライアント通信部２１は再びサーバプッシュを受信するためのＬｏｎｇＰｏｌｌリクエストをサーバ機能通信部３２に送信する。上記ステップＳ１４からの処理が繰り返し実行される。
【００４２】
上記した中間システム３０の処理により、クライアント２０に対して、サーバプッシュによる更新通知機能が提供される。
【００４３】
次に、図４および図５を参照して本発明の第２実施形態に係る中間システムの動作並びにイベント駆動型サーバ拡張プログラムの処理手順について説明する。
【００４４】
本発明の第２実施形態に係る中間システムの構成を図４に示す。  
図４に示すように、本発明の第２実施形態に係る中間システム６０は、サーバプッシュによる更新通知機能をもたない情報提供サーバ（以下、単にサーバと称す）４０と、このサーバ４０に情報提供を要求する情報表示クライアント（以下、単にクライアントと称す）５０との間に介在される。サーバ４０はサーバプッシュによる更新通知機能をもたない既成のＷｅｂアプリケーションにより構成され、リクエストの受信機能とレスポンスの送信機能を実現するサーバ通信部４１を備える。クライアント５０はＷｅｂページの閲覧機能を実現するブラウザにより構成され、リクエストの送信機能とレスポンスの受信機能を実現するクライアント通信部５１を備える。
【００４５】
中間システム６０は、サーバ通信部４１との間で通信を行うブラウザ機能通信部６１と、クライアント通信部５１との間で通信を行うサーバ機能通信部６２と、ブラウザ機能通信部６１から受けたレスポンスを解析し編集してサーバ機能通信部６２に渡すレスポンス解析・編集機能部６５とを具備する。
【００４６】
ブラウザ機能通信部６１は、サーバ機能通信部６２が受信したリクエスト（既定リクエスト）を保存するリクエスト保存部６３を備え、リクエスト保存部６３からリクエストの内容を取り出して、サーバ通信部４１に送信し、サーバ通信部４１からレスポンスを受信する機能と、後述するレスポンス比較部にレスポンスの内容を渡す機能を有して、リクエスト保存部６３から取り出したリクエストにより、サーバ通信部４１に対して定期的なリロードの繰り返しによるポーリング処理を実行する処理機能を実現している。
【００４７】
サーバ機能通信部６２は、クライアント通信部５１からリクエストを受信する機能と、リクエスト保存部６３にリクエストの内容を渡す機能と、レスポンス編集部６８からレスポンスの内容を受け取る機能に加え、レスポンス比較部６７から既成Ｗｅｂアプリケーションのデータが更新された旨の通知を受け、クライアント通信部５１に既成Ｗｅｂアプリケーションのデータが更新されたことを示すデータをプッシュする機能と、クライアント通信部５１に更新されたレスポンスを送信する機能を有する。
【００４８】
リクエスト保存部６３は、サーバ機能通信部６２がリクエストを受信する都度、そのリクエストの内容を受け取り、次に受信したリクエストの内容と比較するまで保存する機能と、ブラウザ機能通信部６１にリクエストの内容を渡す機能を有する。
【００４９】
レスポンス解析・編集機能部６５は、レスポンス保存部６６と、レスポンス比較部６７と、レスポンス編集部６８とを具備して、サーバ機能通信部６２が受信したＬｏｎｇＰｏｌｌリクエストに従い、ブラウザ機能通信部６１に対して、サーバ４０上でイベントが起こった（発生した）か否かを周期的に確認させる、所謂、ポーリング処理を実行し、レスポンスの内容が更新されたことを検出して、当該レスポンスの内容を編集し、編集したレスポンスをサーバ機能通信部６２からプッシュさせる処理機能を実現している。
【００５０】
レスポンス保存部６６は、レスポンス比較部６７からレスポンスの内容を受け取り、保存する機能と、保存したレスポンスの内容をレスポンス比較部６７に渡す機能を有して、ブラウザ機能通信部６１がポーリング処理において受信したレスポンスを受信周期に合わせて一定期間保存し、レスポンス比較部６７に渡す機能を有する。さらにレスポンス比較部６７から既成Ｗｅｂアプリケーションのデータが更新された旨の通知を受けて、保存しているレスポンスの内容を消去する（空にする）機能を有する。なお、レスポンス保存部６６は、レスポンスの内容をレスポンス比較部６７に渡すとき、レスポンスの内容を保存していない場合、空のデータを渡す。
【００５１】
レスポンス比較部６７は、ブラウザ機能通信部６１からレスポンスの内容を受け取る機能と、受け取ったレスポンスの内容をレスポンス保存部６６に渡す機能と、レスポンス保存部６６からレスポンスを取り出す機能と、今回受信したレスポンスとレスポンス保存部６６に保存されている前回受信したレスポンスとの内容を比較する機能と、レスポンスの内容をレスポンス編集部６８に渡す機能を有して、ブラウザ機能通信部６１がレスポンスを受信する都度、ブラウザ機能通信部６１が今回受信したレスポンスの内容と、レスポンス保存部６６に保存された、前回受信したレスポンスの内容とを比較し、レスポンスの内容が更新されたか否かを監視して、レスポンスの内容が更新されたとき、当該更新されたレスポンスの内容をレスポンス編集部６８に渡す処理機能を実現している。さらにレスポンス比較部６７は、レスポンスの内容が更新されたとき、その旨（既成Ｗｅｂアプリケーションのデータが更新されたこと）をサーバ機能通信部６２と、レスポンス保存部６６に通知する機能を有する。
【００５２】
レスポンス編集部６８は、レスポンス比較部６７からレスポンスの内容を受け取る機能と、レスポンスの内容を編集する機能と、レスポンスの内容をサーバ機能通信部４１に渡す機能を有して、レスポンス比較部６７から受けた、更新されたレスポンスの内容を編集し、編集したレスポンスをサーバ機能通信部６２に渡し、サーバ機能通信部６２からプッシュさせる更新通知の処理機能を実現している。ただし、上記した第１実施形態での編集内容は、クライアント通信部が定期的なリロードを実行しないようにすることであったのに対して、この第２実施形態での編集内容は、上記第１実施形態での編集内容に加え、クライアント通信部５１がレスポンスの内容を受信すると、クライアント通信部５１からサーバ機能通信部６２に、ＬｏｎｇＰｏｌｌリクエストを送信させるようにすることと、クライアント通信部５１がサーバ機能通信部６２からデータをプッシュされると、リロードを行うようにすることである。
【００５３】
本発明の第２実施形態に係る中間システム６０を含む通信システム全体の処理手順を図５に示している。図５に示す処理はサーバ機能通信部６２がクライアント通信部５１からリクエスト（既定リクエスト）を受信することによって実行される。
【００５４】
中間システム３０は、ステップＳ２４において、既成Ｗｅｂアプリケーションのデータが更新されたことを検知し、ステップＳ３１において、既成Ｗｅｂアプリケーションのデータが更新されたこと示すデータをブラウザ５０にプッシュする。ブラウザ５０は、ステップＳ３２において、既成Ｗｅｂアプリケーションの最新のデータを得るためにリロードを行い、ステップＳ２８において、既成Ｗｅｂアプリケーションの最新のデータを表示する。
【００５５】
ここで図５に示すフローチャートを参照して本発明の第２実施形態に係る中間システムの動作並びにイベント駆動型サーバ拡張プログラムの処理手順について説明する。
【００５６】
ステップＳ２１において、サーバ機能通信部６２は、クライアント通信部５１からリクエスト（既定リクエスト）を受信し、受信したリクエストの内容をリクエスト保存部６３に渡す。
【００５７】
ステップＳ２２において、リクエスト保存部６３は、上記ステップＳ２１においてサーバ機能通信部６２から受け取ったリクエストを保存する。
【００５８】
ステップＳ２３において、ブラウザ機能通信部６１は、リクエスト保存部６３が保存しているリクエストを取り出し、サーバ通信部４１に送信して、そのリクエストに対するレスポンスを受信し、受信したレスポンスの内容をレスポンス比較部６７に渡す。
【００５９】
ステップＳ２４において、レスポンス比較部６７は、レスポンス保存部６６が保存しているレスポンスの内容を取り出し、上記ステップＳ２３においてブラウザ機能通信部６１から受け取ったレスポンスの内容と比較する。比較の結果、両レスポンスの内容が異なる場合は、ステップＳ３０の処理に移行し、両レスポンスの内容が等しい場合は、上記ステップＳ２３の処理に移行し、レスポンス保存部６６から空のデータを取り出したときは、ステップＳ２５の処理に移行する。上記比較した結果、両レスポンスの内容が異なる場合は、既成Ｗｅｂアプリケーションのデータが更新された場合である。この場合、レスポンス比較部６７は、レスポンス保存部６６とサーバ機能通信部６２に、それぞれ既成Ｗｅｂアプリケーションのデータが更新されたことを通知する。上記両レスポンスの内容が等しい場合は、上記ステップＳ２３の処理に戻り、サーバ通信部１１に対して定期的なリロードの繰り返しによるポーリング処理を実行する。ただし、レスポンス比較部６７がレスポンス保存部６６から空のデータを取り出したとき、レスポンス比較部６７は、ブラウザ機能通信部６１から受け取ったレスポンスの内容を、レスポンス保存部６６とレスポンス編集部６８に渡す。
【００６０】
ステップＳ２５において、レスポンス保存部６６は、上記ステップＳ２４において受け取ったレスポンスの内容を保存する。すなわち、レスポンス保存部６６は、レスポンス比較部６７の比較結果を待って、保存内容を更新する。
【００６１】
ステップＳ２６において、レスポンス編集部６８は、上記ステップＳ２４において受け取ったレスポンスの内容を編集する。ここでの編集内容は、クライアント通信部５１がこのレスポンスを受信すると、クライント通信部５１からサーバ機能通信部６２に、サーバプッシュを受信するためのＬｏｎｇＰｏｌｌリクエストを送信させるようにすることと、リロード機能を無効化するための、リロードを行う記述の消去やコメントアウトすることと、クライアント通信部５１がサーバ機能通信部６２からデータをプッシュされると、リロードを行うようにさせることである。
【００６２】
ステップＳ２７において、サーバ機能通信部６２は、上記ステップＳ２６において受け取ったレスポンスの内容を、ステップＳ２１で受信したリクエストに対するレスポンスとしてクライアント通信部５１に送信する。
【００６３】
ステップＳ２８において、クライアント通信部５１は、上記ステップＳ２７においてサーバ機能通信部６２が送信したレスポンスを受信し、受信したレスポンスの内容を、ブラウザの機能により表示する。
【００６４】
ステップＳ２９において、クライアント通信部５１は、サーバ機能通信部６２に、サーバプッシュを受信するためのＬｏｎｇＰｏｌｌリクエストを送信する。
【００６５】
ステップＳ３０において、レスポンス保存部６６は、上記ステップＳ２４において既成Ｗｅｂアプリケーションのデータが更新されたことを通知されると、保存しているレスポンスの内容を消去する（保存内容を空にする）。
【００６６】
ステップＳ３１において、サーバ機能通信部６２は、上記ステップＳ２４において既成Ｗｅｂアプリケーションのデータが更新されたことを通知されると、クライアント通信部５１に既成Ｗｅｂアプリケーションのデータが更新されたことを示すデータをプッシュする。
【００６７】
ステップＳ３２において、クライアント通信部５１は、上記ステップＳ３１においてデータをプッシュされると、リクエストをサーバ機能通信部に送信する。この後、上記ステップＳ２１に戻って上記した処理が繰り返し実行される。
【００６８】
上記した中間システム６０の処理により、クライアント５０に対して、サーバプッシュによる更新通知機能が提供される。
【図面の簡単な説明】
【００６９】
【図１】本発明の第１実施形態に係る中間システムの機能構成を示すブロック図。
【図２】上記第１実施形態に係る中間システムの通信手順を示すシーケンス図。
【図３】上記第１実施形態に係る中間システムの処理手順を示すフローチャート。
【図４】本発明の第２実施形態に係る中間システムの機能構成を示すブロック図。
【図５】上記第２実施形態に係る中間システムの処理手順を示すフローチャート。
【符号の説明】
【００７０】
１０，４０…情報提供サーバ、１１，４１…サーバ通信部、２０，５０…情報表示クライアント、２１，５１…クライアント通信部、３０，６０…中間システム、３１，６１…ブラウザ機能通信部、３２，６２…サーバ機能通信部、３３，６３…リクエスト保存部、３５，６５…レスポンス解析・編集機能部、３６，６６…レスポンス保存部、３７，６７…レスポンス比較部、３８，６８…レスポンス編集部。
【図１】
2010055560.tif 000003
【図２】
2010055560.tif 000004
【図３】
2010055560.tif 000005
【図４】
2010055560.tif 000006
【図５】
2010055560.tif 000007