(57)【特許請求の範囲】
【請求項１】
通信装置であって、
他の通信装置との間でコネクションを設定すると共に、当該コネクションに基づいて前記他の通信装置との間でストリームを設定する設定手段と、
前記設定手段によりコネクションが設定された前記他の通信装置に対して、プッシュメッセージの受信のためのストリーム数を制御するための制御情報を送信する送信手段と、
前記送信手段により制御情報が送信される前記他の通信装置からプッシュメッセージを受信するためのストリームの識別子情報を受信する識別子受信手段と、
前記識別子受信手段により受信された識別子情報に対応するストリームを用いて前記他の通信装置から前記プッシュメッセージを受信する配信メッセージ受信手段と、
を有することを特徴とする通信装置。
【請求項２】
前記プッシュメッセージの要求に対して前記他の通信装置から送信されたレスポンスを受信するレスポンス受信手段と、
前記レスポンス受信手段で受信された前記レスポンスの内容を判定する判定手段と、
前記判定手段の判定結果を表示する表示手段と、を更に有し、
前記レスポンスの内容が、前記プッシュメッセージを送信できないことを示すエラーレスポンスの場合、前記表示手段はエラー表示を行うことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記ストリームの数を制御するための制御情報を生成する生成手段を更に有し、
前記生成手段で生成された前記制御情報は、前記他の通信装置に送信されるプッシュメッセージの要求に含まれることを特徴とする請求項１または２に記載の通信装置。
【請求項４】
前記識別子情報には、複数のストリーム識別子が含まれることを特徴とする請求項１乃至３のうちいずれか１項に記載の通信装置。
【請求項５】
前記配信メッセージ受信手段で受信した前記プッシュメッセージが前記識別子情報に基づいて予約されたストリームからの受信か否かを判定するメッセージ判定手段と、
前記プッシュメッセージが前記予約されたストリームからの受信である場合、当該ストリームを前記予約されたストリームから削除する削除手段と、を更に有することを特徴とする請求項１乃至４のいずれか１項に記載の通信装置。
【請求項６】
前記メッセージ判定手段の判定の結果に基づいたレスポンスを前記他の通信装置に送信するレスポンス送信手段と、を更に有し、
前記レスポンス送信手段は、
前記プッシュメッセージが前記予約されたストリームからの受信である場合、前記プッシュメッセージの受信完了を示すレスポンスを前記他の通信装置に送信し、
前記プッシュメッセージが前記予約されたストリームからの受信でない場合、エラーレスポンスを前記他の通信装置に送信することを特徴とする請求項５に記載の通信装置。
【請求項７】
通信装置であって、
他の通信装置との間でコネクションを設定すると共に、当該コネクションに基づいて前記他の通信装置との間でストリームを設定する設定手段と、
前記設定手段によりコネクションが設定された前記他の通信装置から、プッシュメッセージの受信のためのストリーム数を制御するための制御情報を受信する受信手段と、
前記受信手段により受信された制御情報の送信元である前記他の通信装置にプッシュメッセージを送信するためのストリームの識別子情報を送信する識別子送信手段と、
前記識別子送信手段により送信された識別子情報に対応するストリームを用いて前記他の通信装置に前記プッシュメッセージを送信する配信メッセージ送信手段と、
前記配信メッセージ送信手段にてプッシュメッセージを送信するためのストリームの数を前記制御情報に基づいて決定する決定手段と、
を有することを特徴とする通信装置。
【請求項８】
前記決定手段は、前記プッシュメッセージの配信要求に含まれる前記ストリームの数を制御するための制御情報に基づいて、前記配信メッセージ送信手段にてプッシュメッセージを送信するためのストリームの数を決定することを特徴とする請求項７に記載の通信装置。
【請求項９】
ストリームの数を保存する保存手段と、
前記決定手段で決定された前記ストリームの数と前記保存手段で保存されている前記ストリームの数との合計が、前記設定手段で設定可能なストリームの数を超えているか否かに基づいて、新たなストリームを設定可能であるか否かの判定を行う配信判定手段と、
を更に有することを特徴とする請求項７または８に記載の通信装置。
【請求項１０】
前記配信判定手段の前記判定の結果に基づいたレスポンスを前記他の通信装置に送信するレスポンス送信手段を更に有し、
前記レスポンス送信手段は、前記決定手段で決定された前記ストリームの数と前記保存手段で保存されている前記ストリームの数との合計が、前記設定手段で設定可能なストリームの数を超えている場合、前記プッシュメッセージの送信ができないことを示すエラーレスポンスを前記他の通信装置に送信することを特徴とする請求項９に記載の通信装置。
【請求項１１】
前記他の通信装置から送信されたレスポンスを受信するレスポンス受信手段と、
前記レスポンス受信手段で受信された前記レスポンスを解析して前記プッシュメッセージが送信できたか判定する解析手段と、
前記解析手段の前記解析の結果を表示する表示手段と、を更に有し、
前記解析の結果により前記プッシュメッセージが送信できなかった場合、前記表示手段はエラー表示を行うことを特徴とする請求項９または１０に記載の通信装置。
【請求項１２】
通信装置であって、
サーバ装置との間で設定されるコネクションに基づいて前記サーバ装置との間で設定されるストリームを介して通信する第１の通信手段と、
配信装置との間で設定されるコネクションに基づいて通信する第２の通信手段と、
前記サーバ装置にプッシュメッセージを要求する配信要求手段と、
前記サーバ装置からプッシュメッセージを受信するためのストリームの識別子情報を受信する識別子受信手段と、
前記識別子受信手段で受信した前記識別子情報を用いて前記ストリームを予約する予約手段と、
前記ストリームを用いて前記サーバ装置から前記プッシュメッセージを受信する配信メッセージ受信手段と、
前記配信装置に前記配信メッセージ受信手段にて受信するストリームの数を制御するための情報を送信する送信手段と、を有し、
前記識別子受信手段が受信する前記ストリームの識別子情報は、前記サーバ装置が、前記配信装置との通信を介して取得した、ストリームの数を制御するための情報に基づいて生成されることを特徴とする通信装置。
【請求項１３】
通信装置であって、
クライアント装置との間で設定されるコネクションに基づいて前記クライアント装置との間で設定されるストリームを介して通信する第１の通信手段と、
配信装置との間で設定されるコネクションに基づいて通信する第２の通信手段と、
前記クライアント装置からプッシュメッセージを要求する配信要求を受信する配信要求受信手段と、
前記クライアント装置にプッシュメッセージを送信するためのストリームの識別子情報を送信する識別子送信手段と、
前記ストリームを用いて前記クライアント装置に前記プッシュメッセージを送信する配信メッセージ送信手段と、
前記配信メッセージ送信手段にて送信するストリームの数を決定する決定手段と、を有し、
前記配信要求受信手段は、前記決定手段で前記ストリームの数を制御するための情報を前記配信装置から受信することを特徴とする通信装置。
【請求項１４】
通信装置であって、
クライアント装置との間で設定されるコネクションに基づいてコネクションに基づいて通信する第１の通信手段と、
サーバ装置との間で設定されるコネクションに基づいて通信する第２の通信手段と、
前記クライアント装置と前記サーバ装置との間の設定されるストリームを介した通信において、前記ストリームの数を制御するための情報を前記クライアント装置から送信される情報に基づいて生成する生成手段と、
前記生成手段により生成された、前記ストリームの数を制御するための情報を前記サーバ装置に送信する送信手段と、
を有することを特徴とする通信装置。
【請求項１５】
前記サーバ装置にプッシュメッセージを要求する配信要求手段と、
前記サーバ装置からプッシュメッセージを受信するためのストリームの識別子情報を受信する識別子受信手段と、
前記識別子受信手段で受信した前記識別子情報を用いて前記ストリームを予約する予約手段と、
前記ストリームを用いて前記サーバ装置から前記プッシュメッセージを受信する配信メッセージ受信手段と、を有し、
前記送信手段は、前記配信メッセージ受信手段にて受信するストリームの数を制御するための情報を前記サーバ装置に送信することを特徴とする請求項１４に記載の通信装置。
【請求項１６】
請求項１乃至１５のいずれか１項に記載の通信装置を有することを特徴とする通信システム。
【請求項１７】
通信装置の通信方法であって、
設定手段が、他の通信装置との間でコネクションを設定すると共に、当該コネクションに基づいて前記他の通信装置との間でストリームを設定する設定工程と、
送信手段が、前記設定工程でコネクションが設定された前記他の通信装置に対して、プッシュメッセージの受信のためのストリーム数を制御するための制御情報を送信する送信工程と、
識別子受信手段が、前記送信工程で制御情報が送信される前記他の通信装置からプッシュメッセージを受信するためのストリームの識別子情報を受信するためのストリームの識別子情報を受信する識別子受信工程と、
配信メッセージ受信手段が、前記識別子受信工程で受信された識別子情報に対応するストリームを用いて前記他の通信装置から前記プッシュメッセージを受信する配信メッセージ受信工程と、
を有することを特徴とする通信方法。
【請求項１８】
通信装置の通信方法であって、
設定手段が、他の通信装置との間でコネクションを設定すると共に、当該コネクションに基づいて前記他の通信装置との間でストリームを設定する設定工程と、
受信手段が、前記設定工程でコネクションが設定された前記他の通信装置から、プッシュメッセージの受信のためのストリーム数を制御するための制御情報を受信する受信工程と、
識別子送信手段が、前記受信工程で受信された制御情報の送信元である前記他の通信装置にプッシュメッセージを送信するためのストリームの識別子情報を送信する識別子送信工程と、
配信メッセージ送信手段が、前記識別子送信工程で送信された識別子情報に対応するストリームを用いて前記他の通信装置に前記プッシュメッセージを送信する配信メッセージ送信工程と、
決定手段が、前記配信メッセージ送信工程にてプッシュメッセージを送信するためのストリームの数を前記制御情報に基づいて決定する決定工程と、
を有することを特徴とする通信方法。
【請求項１９】
コンピュータを、請求項１乃至１５のいずれか１項に記載の通信装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、通信方法、通信システムおよびプログラムに関する。
【背景技術】
【０００２】
インターネット上での通信方法の一つとして、サーバ装置からクライアント装置にメッセージを送信するプッシュ技術がある（特許文献１）。また、近年、ウェブの発展により、ＨＴＴＰ／１．１の高速化が求められており、ＩＥＴＦ（Internet  Engineering  Task  Force）では、ＨＴＴＰ／１．１の次期の規格であるＨＴＴＰ／２が提案されている（非特許文献１）。
【０００３】
ＨＴＴＰ／２は、サーバ装置とクライアント装置との間でコネクションを確立し、そのコネクション上においてストリームと呼ぶ独立した通信シーケンスを複数構築することができる。ＨＴＴＰ／２規格においては、クライアント装置がサーバ装置にプッシュ配信を要求し、サーバ装置がＰＵＳＨ＿ＰＲＯＭＩＳＥフレームを用いてクライアント装置のストリームを予約し、サーバ装置が予約したストリームに対してメッセージを送信することでサーバ装置からクライアント装置へのプッシュ配信を実現する。
【０００４】
一方で、パーソナルコンピュータやブラウザ以外の組込み機器においてもＨＴＴＰは広く利用されている。組込み機器では、プログラムリソースに制限があることが一般的であり、効率的なリソースの使用が求められている。ＨＴＴＰ／２規格では、同時に通信可能なストリーム数を制限するために、SETTINGS_MAX_CONCURRENT_STREAMSパラメータを指定することが可能である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−１４６８７６号公報
【非特許文献】
【０００６】
【非特許文献１】ＨＴＴＰ／２  ＲＦＣ７５４０
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、前述のPUSH_PROMISEフレームにて予約できるストリーム数に関してはストリーム数制限の対象外である。また、ＨＴＴＰ／２規格ではPUSH_PROMISEフレームを受けられない場合の挙動については定義されていない。
【０００８】
クライアント装置がサーバ装置からのプッシュ配信のためのストリーム予約を受けた時に、クライアント装置のリソースが足りないと判断した場合、ストリームの予約が出来ず、プッシュ配信でコネクションエラーとなり、ＨＴＴＰ／２通信が切断されるという課題があった。この課題は、プッシュ配信について規定されているＨＴＴＰ／２以外の通信プロトコルにおいても起こりうる課題である。
【０００９】
本発明は、上記の課題に鑑みてなされたものであり、プッシュ配信に関する予約を制御することが可能な通信技術を提供する。
【課題を解決するための手段】
【００１０】
本発明の一態様による通信装置は以下の構成を備える。すなわち、通信装置は、他の通信装置との間でコネクションを設定すると共に、当該コネクションに基づいて前記他の通信装置との間でストリームを設定する設定手段と、
前記設定手段によりコネクションが設定された前記他の通信装置に対して、プッシュメッセージの受信のためのストリーム数を制御するための制御情報を送信する送信手段と、
前記送信手段により制御情報が送信される前記他の通信装置からプッシュメッセージを受信するためのストリームの識別子情報を受信する識別子受信手段と、
前記識別子受信手段により受信された識別子情報に対応するストリームを用いて前記他の通信装置から前記プッシュメッセージを受信する配信メッセージ受信手段と、を有することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、プッシュ配信に関する予約を制御することが可能になる。
【図面の簡単な説明】
【００１２】
【図１】第１実施形態に係るシステム構成図。
【図２】第１実施形態に係るクライアント装置の構成を示す図。
【図３】第１実施形態に係るサーバ装置の構成を示す図。
【図４】第１実施形態に係るクライアント装置のストリーム制御情報作成時のフローチャートの一例を示す図。
【図５】第１実施形態に係るクライアント装置のプッシュ配信要求時フローチャートを示す図。
【図６】第１実施形態に係るクライアント装置のプッシュメッセージ受信時フローチャートを示す図。
【図７】第１実施形態に係る通信装置のプッシュ配信要求受信時のフローチャートを示す図。
【図８】第１実施形態に係る通信装置のプッシュ予約時のフローチャートを示す図。
【図９】第１実施形態に係るプッシュ配信要求時のシーケンスを示す図。
【図１０】第１実施形態に係るプッシュ配信要求エラー時のシーケンスを示す図。
【図１１】第１実施形態に係るエラー画面を示す図。
【図１２】第１実施形態に係るリストを示す図。
【図１３】第２実施形態に係るシステム構成図。
【図１４】第２実施形態に係るクライアント装置の構成を示す図。
【図１５】第２実施形態に係るサーバ装置の構成を示す図。
【図１６】第２実施形態に係る外部装置のハードウェア構成を示す図。
【図１７】第２実施形態に係るクライアント装置の第１のストリーム制御情報作成時のフローチャートを示す図。
【図１８】第２実施形態に係る外部装置の第２のストリーム制御情報時のフローチャートの一例を示す図。
【図１９】第２実施形態に係るサーバ装置の第２のストリーム制御情報受信時フローチャートを示す図
【図２０】第２実施形態に係るプッシュ配信要求時のシーケンスを示す図。
【図２１】第３実施形態に係る外部装置の構成を示す図。
【図２２】第３実施形態に係る外部装置のプッシュ配信要求時のフローチャートの一例を示す図。
【図２３】第３実施形態に係る外部装置のプッシュメッセージ受信時フローチャートの一例を示す図。
【図２４】第３実施形態に係るプッシュ配信要求時のシーケンスを示す図。
【発明を実施するための形態】
【００１３】
以下、図面を参照して、本発明の実施形態を例示的に詳しく説明する。ただし、この実施形態に記載されている構成要素はあくまで例示であり、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
【００１４】
（第１実施形態）
図１は第１実施形態に係る通信システムの構成図である。図１に示すネットワーク１００にはクライアント装置１０１とサーバ装置１０２が接続している。クライアント装置１０１は、他の通信装置（サーバ装置１０２）との間で設定されるコネクションに基づいて他の通信装置（サーバ装置１０２）との間で設定されるストリームを介して通信可能に構成されている。すなわち、クライアント装置１０１は、サーバ装置１０２との間でコネクションを設定すると共に、当該コネクションに基づくストリームを設定する。また、サーバ装置１０２も同様に、他の通信装置（クライアント装置１０１）との間で設定されるコネクションに基づいて他の通信装置（クライアント装置１０１）との間で設定されるストリームを介して通信可能に構成されている。本実施形態におけるネットワーク１００は、例えば、インターネット、ＷＡＮ（Wide  Area  Network）、ＬＡＮ（Local  Area  Network）、等の複合であっても実現可能である。また、クライアント装置１０１とサーバ装置１０２は、ネットワーク１００を介さずに、直接接続しても良い。クライアント装置１０１とサーバ装置１０２は、例えば、無線アドホックネットワークを用いて接続可能である。
【００１５】
図２は、クライアント装置１０１のハードウェア構成を示す図である。クライアント装置１０１を構成する各部はバス２００に接続している。プッシュ配信開始検知部２０１は、アプリケーションからプッシュ配信開始を検知する。ストリーム制御情報生成部２０２は、ストリーム数決定部３０２で決定する、ストリーム数を制御するための情報（ストリーム制御情報）を生成する。
【００１６】
ストリーム生成部２０３は、プッシュ配信要求部２０４にてサーバ装置１０２と通信するストリームを生成する。プッシュ配信要求部２０４は、サーバ装置１０２にプッシュ配信要求を行う。また、ストリーム生成部２０３は、サーバ装置１０２との間でコネクションを設定すると共に、当該コネクションに基づくストリームを設定するための処理を実行する。レスポンス受信部２０５は、サーバ装置１０２からのレスポンスを受信する。レスポンス判定部２０６は、レスポンス受信部２０５で受信したレスポンス内容を解析し、プッシュ予約のレスポンスか、プッシュ完了のレスポンスか、プッシュ配信要求エラーのレスポンスかを判定する。
【００１７】
ストリーム予約部２０７は、サーバ装置１０２が指定したストリームＩＤ（ストリームの識別子情報）に基づくストリームの予約を行う。表示部２０８は、サーバ装置１０２からエラーレスポンスを受信した際にエラー画面を表示する。プッシュメッセージ受信部２０９は、サーバ装置１０２からプッシュメッセージを受信する。プッシュメッセージ判定部２１０は、プッシュメッセージ受信部２０９で受信したプッシュメッセージを解析し、予約したストリームか否かを判定する。プッシュレスポンス送信部２１１は、プッシュレスポンスを送信する。ストリーム削除部２１２は、サーバ装置１０２と通信するストリームを削除する。
【００１８】
図３は、サーバ装置１０２のハードウェア構成を示す図である。サーバ装置１０２を構成する各部はバス３００に接続している。プッシュ配信要求受信部３０１は、クライアント装置１０１からプッシュ配信要求を受信する。
【００１９】
ストリーム数決定部３０２は、プッシュ配信要求受信部３０１にて受信した配信要求に含まれる、ストリーム数を制御するための情報（ストリーム制御情報）を元に、プッシュメッセージ送信できるアクティブなストリーム数を決定する。ここで、アクティブなストリーム数は、ストリーム生成部３０４でストリームの生成を行ってからストリーム削除部３１４でストリームの削除を行うまでの、ストリームが生成されている状態のストリーム数を示す。
【００２０】
配信判定部３０３は、プッシュ配信ができるか否かを判定する。ストリーム生成部３０４は、プッシュメッセージ送信部３１０にてクライアント装置１０１と通信するストリームを生成する。保存部３０５は、プッシュ配信できる最大のストリーム数の合計を保存する。レスポンス生成部３０６は、プッシュ予約するためのメッセージ、もしくはプッシュ配信要求のレスポンスのメッセージを生成する。
【００２１】
レスポンス送信部３０７は、レスポンス生成部３０６で生成したメッセージをクライアント装置１０１に送信する。プッシュイベント検知部３０８は、アプリケーションからのプッシュイベントを検知する。プッシュメッセージ生成部３０９は、プッシュイベント検知部３０８で検知したイベントを元にプッシュメッセージを生成する。プッシュメッセージ送信部３１０は、プッシュメッセージ生成部３０９で生成したプッシュメッセージをクライアント装置１０１に送信する。
【００２２】
プッシュレスポンス受信部３１１は、プッシュメッセージ送信部３１０のプッシュメッセージに対応するプッシュレスポンスをクライアント装置１０１から受信する。プッシュレスポンス解析部３１２は、プッシュレスポンス受信部３１１で受信したプッシュレスポンスを解析し、プッシュメッセージ送信部３１０のプッシュメッセージが送信できたか否かを判定する。表示部３１３は、クライアント装置１０１からエラーレスポンスを受信した際にエラー画面を表示する。ストリーム削除部３１４は、クライアント装置１０１と通信するストリームを削除する。プッシュ完了検知部３１５は、プッシュ配信完了を検知し、クライアント装置１０１からのプッシュ要求完了を検知する。
【００２３】
図４はＨＴＴＰ／２を使用した通信において、クライアント装置１０１が設定可能なストリーム数を制御するためのストリーム制御情報を作成する際のフローチャートである。
【００２４】
Ｓ４０１において、プッシュ配信開始検知部２０１は、プッシュ配信開始を検知する。ここで、プッシュ配信開始の検知は、クライアント装置１０１に内蔵するアプリケーションによる指示や、センサなどによるイベント検知などを示す。プッシュ配信開始は、例えば、ユーザがブラウザを用いてＷｅｂページにアクセスする場合や、アプリケーションを用いたニュースやイベント情報の配信を要求する場合、サーバ装置１０２の先に接続されているセンサ機器のセンシングを監視する場合などを示す。
【００２５】
Ｓ４０２において、ストリーム制御情報生成部２０２は、設定可能なストリーム数決定部３０２で決定する、ストリーム数を制御するためのストリーム制御情報を生成し、そして、Ｓ４０３で、図５の処理に進む。
【００２６】
図５はＨＴＴＰ／２を使用した通信において、クライアント装置１０１がサーバ装置１０２にプッシュ配信要求を行う際のクライアント装置１０１のフローチャートである。Ｓ５０１において、ストリーム生成部２０３は、プッシュ配信要求部２０４でサーバ装置１０２と通信するためのストリームを生成する。
【００２７】
Ｓ５０２において、プッシュ配信要求部２０４はサーバ装置１０２にプッシュ配信要求する。クライアント装置１０１からサーバ装置１０２へ送信されるプッシュ配信要求には、Ｓ４０２にて生成されたストリーム制御情報が含まれる。本実施形態におけるストリーム制御情報は、プッシュメッセージを送信するためのストリーム数を制御するための情報である。なお、本実施形態では、プッシュ配信要求にストリーム制御情報が含まれる例を中心に説明するが、ストリーム制御情報とプッシュ配信要求とが別々にサーバ装置１０２へ送信されるようにしても良い。以降、サーバ装置１０２からプッシュ完了もしくはプッシュ配信要求エラーを示すレスポンスを受信するまで、ループ処理を行う（Ｓ５０３〜Ｓ５０７）。
【００２８】
Ｓ５０４において、レスポンス受信部２０５は、サーバ装置１０２からのレスポンスを受信する。Ｓ５０５において、レスポンス判定部２０６は、レスポンス内容が、プッシュ予約か否かを判定する。プッシュ予約のレスポンスであれば（Ｓ５０５−Ｙｅｓ）、Ｓ５０６に進み、プッシュ予約のレスポンスでなければ（Ｓ５０５−Ｎｏ）、Ｓ５０３のループを抜け、Ｓ５０８に進む。
【００２９】
Ｓ５０６において、ストリーム予約部２０７はレスポンス受信部２０５で受信したレスポンスに含まれるストリームＩＤに基づくストリームを予約する。ここで、ストリームＩＤに基づくストリームの予約は、ストリームＩＤ対応したストリームの生成、及び、図１２のプッシュ予約リストにストリームＩＤを追加することを示す。例えば、保存部３０５は、図１２に示すプッシュ予約リストを保存することが可能である。
【００３０】
Ｓ５０８において、レスポンス判定部２０６は、レスポンス内容が、エラーレスポンスか否かを判定する。エラーレスポンスの場合は（Ｓ５０８−Ｙｅｓ）、Ｓ５０９に進み、プッシュ配信完了を示すレスポンスの場合（Ｓ５０８−Ｎｏ）、Ｓ５１０に進む。Ｓ５０９において、表示部２０８は、レスポンス判定部２０６の判定結果を表示する。具体的には、図１１（ａ）のエラー表示を行う。そして、Ｓ５１０において、ストリーム削除部２１２は、ストリーム生成部２０３で生成されたストリームと図１２に登録されているストリームを削除する。
【００３１】
図６はＨＴＴＰ／２を使用した通信において、クライアント装置１０１がサーバ装置１０２からプッシュメッセージ受信を行った際のクライアント装置１０１のフローチャートである。Ｓ６０１において、プッシュメッセージ受信部２０９は、サーバ装置１０２からプッシュメッセージの受信を行う。
【００３２】
Ｓ６０２において、プッシュメッセージ判定部２１０は、プッシュメッセージ受信部２０９で受信したプッシュメッセージが予約したストリームからの受信か否かを判定する。予約したストリームからの受信の場合（Ｓ６０２−Ｙｅｓ）、Ｓ６０３に進み、予約したストリームからの受信でない場合（Ｓ６０２−Ｎｏ）、Ｓ６０４に進む。
【００３３】
Ｓ６０３において、プッシュレスポンス送信部２１１は、プッシュメッセージ受信部２０９で受信したプッシュメッセージに対応するプッシュレスポンスをサーバ装置１０２に送信する。予約したストリームからの受信の場合は、プッシュメッセージ（配信メッセージ）の受信完了を示す完了レスポンスをサーバ装置１０２に送信する。
【００３４】
Ｓ６０４において、予約したストリームからの受信でない場合、プッシュレスポンス送信部２１１は、プッシュメッセージ（配信メッセージ）の受信エラーを示すエラーレスポンスを送信する。尚、プッシュメッセージが複数個に分割されている場合は、プッシュメッセージを全て受信してから、プッシュレスポンス送信部２１１はレスポンスを送信することが可能である。Ｓ６０５において、ストリーム削除部２１２は、プッシュメッセージ受信部２０９で受信したストリームを削除する。
【００３５】
図７はＨＴＴＰ／２を使用した通信において、サーバ装置１０２がクライアント装置１０１からプッシュ配信要求の受信があった際のサーバ装置１０２のフローチャートである。Ｓ７０１において、プッシュ配信要求受信部３０１は、クライアント装置１０１からプッシュ配信要求を受信する。
【００３６】
Ｓ７０２において、ストリーム数決定部３０２は、プッシュ配信要求受信部３０１で受信したプッシュ配信要求に含まれるストリーム制御情報からプッシュメッセージ送信できるアクティブなストリーム数を決定する。アクティブなストリーム数の決定方法は、サーバ装置１０２のストリーム数決定部３０２が有するストリーム制御情報と比較し、その最小値をアクティブなストリーム数としても良いし、ストリーム制御情報に通信環境の状況（混雑具合や通信距離）などからストリーム数を算出しても良い。
【００３７】
Ｓ７０３において、配信判定部３０３は、決定されたストリームの数について、プッシュ配信可能か否かを判定する。プッシュ配信可能な場合（Ｓ７０３−Ｙｅｓ）、Ｓ７０４に進み、プッシュ配信が可能でない場合（Ｓ７０３−Ｎｏ）、Ｓ７０６に進む。ここでの判定基準はストリーム数決定部３０２で決定したストリーム数と保存部３０５で保存しているプッシュ配信ストリーム数の合計が、サーバ装置１０２のストリーム生成部３０４がストリーム生成可能なストリーム数を超えていないか否かである。
【００３８】
レスポンス送信部３０７は、プッシュ配信要求受信部３０１で受信したプッシュ配信要求に対応するレスポンスを送信する。プッシュ配信可能な場合、プッシュ配信ができた場合、図８の処理を実施後（Ｓ７０４）に、レスポンス送信部３０７は、完了レスポンスを送信する（Ｓ７０５）。一方、Ｓ７０６において、プッシュ配信が可能でない場合、レスポンス送信部３０７は、エラーレスポンスを送信する。
【００３９】
図８はＨＴＴＰ／２を使用した通信において、サーバ装置１０２がクライアント装置１０１にプッシュ予約を行い、プッシュ配信を行う際のサーバ装置１０２のフローチャートである。Ｓ８０１において、ストリーム生成部３０４は、ストリーム数決定部３０２が決定したストリーム数分、ストリームを生成する。ストリーム生成部３０４は、生成したストリームのストリームＩＤを図１２のリストに追加する。
【００４０】
Ｓ８０２において、保存部３０５は、プッシュ配信ストリーム数にストリーム数決定部３０２が決定したストリーム数を加算し保存する。もし、保存部３０５にプッシュ配信ストリーム数が保存されていなかった場合は、保存部３０５は、ストリーム数決定部３０２が決定したストリーム数をプッシュ配信ストリーム数として保存する。
【００４１】
Ｓ８０３において、レスポンス生成部３０６は、クライアント装置１０１にプッシュ予約するためのプッシュ予約メッセージを生成する。ここで、レスポンス生成部３０６により生成されるプッシュ予約メッセージには、ストリーム生成部３０４で生成されたストリームのストリームＩＤが含まれる。尚、本実施形態では１つのプッシュ予約メッセージに対して１つのストリームＩＤを含めているが、これは複数のストリームＩＤを含めてもよい。プッシュ予約メッセージには、予約するストリームを識別するためのストリーム識別子（ストリームＩＤ）が含まれる。あるいは、プッシュ予約メッセージには、予約する複数のストリームのそれぞれを識別するための複数のストリーム識別子（ストリームＩＤ）が含まれる。複数のストリームＩＤを含めることで、クライアント装置１０１とのプッシュ予約を行うためのメッセージ数を削減することができ、通信コストの削減が可能になる。
【００４２】
Ｓ８０４において、レスポンス送信部３０７は、レスポンス生成部３０６で生成されたプッシュ予約メッセージをクライアント装置１０１に送信する。以降、プッシュ配信が完了するか、もしくは、クライアント装置１０１から配信要求完了を受信するまでループ処理を行う（Ｓ８０５〜Ｓ８１６）。
【００４３】
Ｓ８０６において、プッシュイベント検知部３０８は、プッシュイベントを検知する。ここでのプッシュイベントの検知は、クライアント装置１０１に内蔵するアプリケーションによる指示や、センサなどによるイベント検知、または、他の通信装置からのプッシュ指示などを示す。
【００４４】
Ｓ８０７において、プッシュメッセージ生成部３０９は、プッシュイベント検知部３０８にて検知されたプッシュイベントをもとに、プッシュメッセージの生成を行う。Ｓ８０８において、プッシュメッセージ送信部３１０は、プッシュメッセージ生成部３０９で生成されたプッシュメッセージをクライアント装置１０１に送信する。プッシュメッセージを送信する際に使用するストリームは、図１２（ａ）のリストからストリームＩＤを取得するものとする。
【００４５】
Ｓ８０９において、プッシュレスポンス受信部３１１は、プッシュメッセージ送信部３１０により送信されたプッシュメッセージに対応するプッシュレスポンスを受信する。Ｓ８１０において、プッシュレスポンス解析部３１２は、プッシュレスポンス受信部３１１が受信したプッシュレスポンスを解析し、プッシュメッセージ送信部３１０のプッシュメッセージが送信できたか判定する。本実施形態では、プッシュレスポンス解析部３１２は、ステータスコードを確認し、例えば、ステータスコードが２００  ＯＫとなっているか否かで判定することが可能である。尚、プッシュメッセージが送信できたか否かを判定するために使用する情報として、他のステータスコードでも良いし、ステータスコード以外の確認方法、例えば、ヘッダフィールドのパラメータを用いても良い。プッシュメッセージが送信できた場合（Ｓ８１０−Ｙｅｓ）、Ｓ８１２に進み、送信できなかった場合（Ｓ８１０−Ｎｏ）、Ｓ８１１に進む。Ｓ８１１において、表示部３１３は図１１（ｂ）のエラー表示を行う。
【００４６】
Ｓ８１２において、ストリーム削除部３１４は、プッシュメッセージ送信部３１０により送信されたプッシュメッセージに対応するストリームを削除する。ストリーム削除部３１４は、削除したストリームのストリームＩＤを図１２のリストから削除する。Ｓ８１３において、ストリーム生成部３０４はストリームを生成する。ストリーム生成部３０４は、生成したストリームのストリームＩＤを図１２のリストに追加する。Ｓ８１４において、レスポンス生成部３０６は、クライアント装置１０１にプッシュ予約するためのプッシュ予約メッセージを生成する。ここで、レスポンス生成部３０６により生成されるプッシュ予約メッセージには、ストリーム生成部３０４で生成されたストリームのストリームＩＤが含まれる。
【００４７】
Ｓ８１５において、レスポンス送信部３０７は、レスポンス生成部３０６で生成されたプッシュ予約メッセージをクライアント装置１０１に送信する。Ｓ８１７において、プッシュ完了検知部３１５がプッシュ配信完了を検知すると、保存部３０５は、保存しているプッシュ配信ストリーム数からストリーム数決定部３０２が決定したストリーム数を減算し、減算結果を保存する。Ｓ８１８において、ストリーム削除部３１４は、図１２のリストに登録されているストリームを削除する。
【００４８】
図９はＨＴＴＰ／２を使用した通信において、クライアント装置１０１がサーバ装置１０２に配信要求を行い、サーバ装置１０２がクライアント装置１０１にプッシュ予約を行い、サーバ装置１０２がクライアント装置１０１にプッシュメッセージを配信する際のシーケンスである。
【００４９】
Ｍ９０１において、プッシュ配信開始検知部２０１は、プッシュ配信要求を検知する（Ｓ４０１）。ストリーム制御情報生成部２０２は、アプリケーションが指定したストリーム数をストリーム制御情報として生成する（Ｓ４０２）。尚、本実施形態ではストリーム制御情報として、アプリケーションが指定したストリーム数を用いているが、クライアント装置１０１が保持している固定値や変動値を用いても良いし、ストリーム数でなくとも、クライアント装置１０１の処理負荷の値や、クライアント装置１０１とサーバ装置１０２との距離といった、サーバ装置１０２がストリーム数を決定するために必要な情報であってもよい。また、ストリーム数を決定するための情報ではなく、プッシュ配信要求を受けられない時にサーバ装置１０２が返却するエラーコード、例えば、ステータスコード：５００（Internal Server Error）や、ステータスコード：５０３（Service Unavailable）などのステータスコードを用いてもよい。エラーコードを指定すればプッシュ配信要求がストリームを生成できないことをクライアント装置１０１が認識することができる。クライアント装置１０１はSETTINGSフレームのSETTINGS_MAX_CONCURRENT_STREAMSに指定するプッシュ可能なストリーム数を増やしたり、他ストリームの通信を切断したりすることで、プッシュ配信要求を受けることができるようになるといった効果がある。
【００５０】
Ｍ９０２において、ストリーム生成部２０３は、プッシュ配信要求部２０４でサーバ装置１０２と通信するためのストリームを生成（本実施形態ではＳＴ００００３）する（Ｓ５０１）。Ｍ９０３において、プッシュ配信要求部２０４はサーバ装置１０２にプッシュ配信要求する（Ｓ５０２）。プッシュ配信要求部２０４はHEADERSフレーム（ＧＥＴメソッド）を用いて送信し、プッシュ配信要求に含めるストリーム制御情報はヘッダフィールドに含まれる。プッシュ配信要求受信部３０１は、クライアント装置１０１からプッシュ配信要求を受信する（図７のＳ７０１）。ストリーム数決定部３０２は、プッシュ配信要求受信部３０１で受信したプッシュ配信要求に含まれるストリーム制御情報からプッシュメッセージ送信できるアクティブなストリーム数を決定し（Ｓ７０２）、配信判定部３０３は、プッシュ配信可能と判定する（Ｓ７０３ーＹｅｓ）。本実施形態では、ストリーム制御情報にはストリーム数（本実施形態では３とする）が含まれており、その値をプッシュメッセージ送信できるアクティブなストリーム数として決定する。尚、ストリーム数の決定方法はストリーム制御情報をもとに算出するといった方法や、サーバ装置１０２が指定するストリーム数と比較し小さいほうの値を用いるといった方法でも良い。また、本実施形態における配信判定部３０３でのプッシュ配信の判定基準は、ストリーム数決定部３０２で決定したストリーム数と保存部３０５で保存しているプッシュ配信ストリーム数の合計が、SETTINGS_MAX_CONCURRENT_STREAMSを超えていないか否かである。ここで、SETTINGS_MAX_CONCURRENT_STREAMSは、本シーケンスが始まる以前にクライアント装置１０１から受信されたSETTINGSフレームに含まれるパラメータ（プッシュ可能なストリーム数）を示す。
【００５１】
Ｍ９０４において、ストリーム生成部３０４はストリーム数決定部３０２が決定したストリーム数分、ストリームを生成する（本実施形態ではＳＴ００００４、ＳＴ００００６、ＳＴ００００８）する（図８のＳ８０１）。ストリーム生成部３０４は生成したストリームのストリームＩＤを図１２のリストに追加する。保存部３０５はストリーム数決定部３０２が決定したストリーム数（３）をプッシュ配信ストリーム数として保存する（Ｓ８０２）。
【００５２】
Ｍ９０５〜Ｍ９０７において、レスポンス生成部３０６はプッシュ予約メッセージを作成し（Ｓ８０３）、レスポンス送信部３０７は、レスポンス生成部３０６で生成されたプッシュ予約メッセージをクライアント装置１０１に送信する（Ｓ８０４）。ここで、レスポンス生成部３０６は、プッシュメッセージ（配信メッセージ）を送信するためのストリームの識別子情報を生成する生成部として機能し、レスポンス送信部３０７は、プッシュメッセージ（配信メッセージ）を送信するためのストリームの識別子情報をストリーム制御情報の送信元である他の通信装置に送信する識別子送信部として機能する。本実施形態でのプッシュ予約メッセージは、ストリームの識別子情報に対応するPUSH_PROMISEフレームを示す。
【００５３】
レスポンス受信部２０５は、サーバ装置１０２からのレスポンスを受信する（図５のＳ５０４）。ここで、レスポンス受信部２０５は、配信メッセージを受信するためのストリームの識別子情報を受信する識別子受信部として機能する。レスポンス判定部２０６は、レスポンス内容が、プッシュ予約であると判定し（Ｓ５０５−Ｙｅｓ）、ストリーム予約部２０７はレスポンス受信部２０５で受信したレスポンスに含まれるストリームＩＤに対応したストリームの生成、及び、図１２のプッシュ予約リストへの追加（本実施形態ではＳＴ００００４、ＳＴ００００６、ＳＴ００００８）を行う（図５のＳ５０６）。本実施形態では、ストリーム生成〜プッシュ予約メッセージの送信をストリーム数決定部３０２の決定後に全てのストリームに対して行っている。尚、予めプッシュ予約メッセージを、クライアント装置１０１に送っておくことで、プッシュイベント検知部３０８にてプッシュイベント検知時にプッシュ予約メッセージを送る必要が無くなることでプッシュメッセージを送る手順を低減することができる。尚、本実施形態では、全てのストリームに対して予めプッシュ予約を行っているが、プッシュイベント検知部３０８にてプッシュイベントを検知する度に、プッシュ予約を１ストリームに対して行ってもよい。プッシュイベント毎に予約することで、クライアント装置１０１でのプッシュ予約待ちストリームを減らすことができ、リソースの負荷軽減につなげられる。
【００５４】
Ｍ９０８において、プッシュイベント検知部３０８はプッシュイベントを検知し（Ｓ８０６）、プッシュメッセージ生成部３０９はプッシュメッセージの生成を行なう（図８のＳ８０７）。
【００５５】
Ｍ９０９において、プッシュメッセージ送信部３１０は、プッシュメッセージをクライアント装置１０１に送信する（Ｓ８０８）。ここで、プッシュメッセージ送信部３１０は、ストリームを用いて他の通信装置（クライアント装置１０１）に配信メッセージを送信する配信メッセージ送信部として機能する。クライアント装置１０１のプッシュメッセージ受信部２０９は、サーバ装置１０２からプッシュメッセージの受信を行う（Ｓ６０１）。ここで、プッシュメッセージ受信部２０９は、ストリームを用いて他の通信装置（サーバ装置１０２）からプッシュメッセージ（配信メッセージ）を受信する配信メッセージ受信部として機能する。プッシュメッセージ判定部２１０は、予約したストリームからの受信（ＳＴ００００４）であると判定する（Ｓ６０２-Ｙｅｓ）。本実施形態において、プッシュメッセージ判定部２１０は、予約したストリームからの受信か否かの判定処理を、図１２のプッシュ予約リストに含まれているか否かに基づいて実行する。
【００５６】
Ｍ９１０において、プッシュレスポンス送信部２１１は、プッシュメッセージに対応するプッシュレスポンスをサーバ装置１０２に送信する。プッシュレスポンス受信部３１１は、プッシュレスポンスを受信し（Ｓ８０９）、プッシュレスポンス解析部３１２はプッシュメッセージが正常に送信したと判定する（Ｓ８１０−Ｙｅｓ）。Ｍ９１１において、ストリーム削除部２１２は、プッシュメッセージ受信部２０９で受信したストリーム（ＳＴ００００４）を削除する（Ｓ６０５）。
【００５７】
Ｍ９１２において、ストリーム削除部３１４は、プッシュメッセージ送信部３１０で送信したプッシュメッセージに対応するストリームを削除する（Ｓ８１２）。ストリーム削除部３１４は、削除したストリームのストリームＩＤを図１２のリストから削除する。Ｍ９１３において、ストリーム生成部３０４はストリームを生成（本実施形態ではＳＴ０００１０）する（Ｓ８１３）。ストリーム生成部３０４は、生成したストリームのストリームＩＤを図１２のリストに追加する。
【００５８】
Ｍ９１４において、レスポンス生成部３０６はプッシュ予約メッセージを作成し（Ｓ８１４）、レスポンス送信部３０７は、レスポンス生成部３０６で生成されたプッシュ予約メッセージをクライアント装置１０１に送信する（Ｓ８１５）。レスポンス受信部２０５は、サーバ装置１０２からのレスポンスを受信する（Ｓ５０４）。レスポンス判定部２０６は、レスポンス内容が、プッシュ予約であると判定し（Ｓ５０５−Ｙｅｓ）、ストリーム予約部２０７はレスポンス受信部２０５で受信したレスポンスに含まれるストリームＩＤに対応したストリームの生成、及び、図１２のプッシュ予約リストへの追加（本実施形態ではＳＴ０００１０）を行う（Ｓ５０６）。Ｍ９１５において、プッシュ完了検知部３１５はプッシュ完了を検知し（Ｓ８０５でループ終了）、保存部３０５で保存しているプッシュ配信ストリーム数からストリーム数決定部３０２が決定したストリーム数（３）を減算し、減算結果を保存する（Ｓ８１７）。
【００５９】
Ｍ９１６において、レスポンス送信部３０７は、プッシュ配信要求受信部３０１で受信したプッシュ配信要求に対応する完了レスポンス（ステータスコード：２００ ＯＫ）を送信する（Ｓ７０５）。レスポンス受信部２０５は、サーバ装置１０２からのレスポンスを受信し（Ｓ５０４）、レスポンス判定部２０６は、レスポンス内容が、プッシュ予約でなく（Ｓ５０５−Ｎｏ）、エラーレスポンスでないと判定する（Ｓ５０８−Ｎｏ）。
【００６０】
Ｍ９１７において、ストリーム削除部２１２は、生成されたストリーム（本実施形態ではＳＴ００００３、ＳＴ００００６、ＳＴ００００８、ＳＴ０００１０）を削除する（Ｓ５１０）。Ｍ９１８において、ストリーム削除部３１４は、生成されたストリーム（本実施形態ではＳＴ００００３、ＳＴ００００６、ＳＴ００００８、ＳＴ０００１０）を削除する（Ｓ８１８）。
【００６１】
図１０はＨＴＴＰ／２を使用した通信において、クライアント装置１０１がサーバ装置１０２に配信要求を行ったが、ストリームを予約することが出来ないためエラーレスポンスを返却した際のシーケンスである。
【００６２】
Ｍ１００１において、プッシュ配信開始検知部２０１は、プッシュ配信要求を検知する（Ｓ４０１）。ストリーム制御情報生成部２０２は、アプリケーションが指定したストリーム数をストリーム制御情報として生成する（Ｓ４０２）。Ｍ１００２において、ストリーム生成部２０３は、プッシュ配信要求部２０４でサーバ装置１０２と通信するためのストリームを生成（本実施形態ではＳＴ０００１１）する（Ｓ５０１）。
【００６３】
Ｍ１００３において、プッシュ配信要求部２０４はサーバ装置１０２にプッシュ配信要求する（Ｓ５０２）。プッシュ配信要求受信部３０１は、クライアント装置１０１からプッシュ配信要求を受信する（Ｓ７０１）。ストリーム数決定部３０２は、プッシュ配信要求受信部３０１で受信したプッシュ配信要求に含まれるストリーム制御情報からプッシュメッセージ送信できるアクティブなストリーム数を決定し（Ｓ７０２）、配信判定部３０３は、プッシュ配信不可能と判定する（Ｓ７０３−Ｎｏ）。
【００６４】
Ｍ１００４において、レスポンス送信部３０７は、プッシュ配信要求受信部３０１で受信したプッシュ配信要求に対応するエラーレスポンス（ステータスコード：５００(Internal Server Error）)を送信する（Ｓ７０６）。ここではエラーレスポンスとして、ステータスコード：５００としているが、ステータスコード：５０３（Service Unavailable）など、他のステータスコードであってもよい。レスポンス受信部２０５は、サーバ装置１０２からのレスポンスを受信し（Ｓ５０４）、レスポンス判定部２０６は、レスポンス内容が、プッシュ予約でなく（Ｓ５０５−Ｎｏ）、エラーレスポンスであると判定する（Ｓ５０８−Ｙｅｓ）。Ｍ１００５において、表示部２０８は図１１（ａ）に示すエラー表示を行う（Ｓ５０９）。Ｍ１００６において、ストリーム削除部２１２は、ストリーム生成部２０３で生成されたストリーム（本実施形態ではＳＴ０００１１）を削除する（Ｓ５１０）。
【００６５】
図１１は、第１実施形態に係るエラー画面を例示する図である。図１１（ａ）は、レスポンス判定部２０６がプッシュ配信要求に失敗した際に表示部２０８でエラーを表示する際の画面である。図１１（ｂ）は、プッシュレスポンス解析部３１２がプッシュ配信失敗した際に表示部３１３でエラーを表示する際の画面である。尚、エラーの表示方法は、図１１のような表示形態でなくても、例えば、ウェブブラウザ画面でのエラー表示や、画面表示のない機器であればＬＥＤの点滅表示や、スピーカから警告音を発生させる等といった方法でもエラーの発生を報知することが可能である。
【００６６】
図１２は、プッシュ配信を行うストリームＩＤのリストを例示する図である。図１２では、ＳＴ００００４、ＳＴ００００６、ＳＴ００００８のように、連続した偶数の値を用いているが、プッシュ配信を行うストリームを特定することが可能な情報であれば、例えば、ＳＴ００００４、ＳＴ００００８、ＳＴ０００１６のように数字を飛ばしてもよい。
【００６７】
以上、本実施形態において、クライアント装置１０１は、プッシュ配信要求時に、ストリーム数を制御するためのストリーム制御情報をサーバ装置１０２に送信する。サーバ装置１０２のストリーム数決定部３０２で決定したストリーム数から配信判定部３０３はプッシュ配信可能か否かを判定する。プッシュ配信できない場合、レスポンス送信部３０７は、エラーレスポンスをクライアント装置１０１に送信することで、プッシュ配信要求時にプッシュ予約ができないことを判断することが出来る。これにより、クライアント装置１０１は、クライアント装置１０１のリソースを超えるサーバ装置１０２からのストリーム予約を受けることが無くなり、ＨＴＴＰ／２通信が切断されなくなるという効果がある。
【００６８】
更に、本実施形態において、クライアント装置１０１は、プッシュ配信要求時にストリーム制御情報をサーバ装置１０２に送信し、ストリーム数決定部３０２で決定したストリーム数のストリームについてクライアント装置１０１に対してプッシュ予約を行う。これにより、サーバ装置１０２のプッシュ配信頻度が低い場合に過剰にプッシュ予約を行わなくてすむようになり、クライアント装置１０１のリソースを低減できる。また、プッシュ配信によって通信帯域を占有されることを防ぐことができるといった効果もある。
【００６９】
（第２実施形態）
本発明の第２実施形態について、図面を参照して説明する。図１３は第２実施形態に係るシステム構成図である。図１３において、第１のネットワーク１３００にはクライアント装置１０１とサーバ装置１０２が接続する。第２のネットワーク１３０１には外部装置１３０３（配信装置）とサーバ装置１０２が接続する。また、第３のネットワーク１３０２には、クライアント装置１０１と外部装置１３０３が接続する。
【００７０】
クライアント装置１０１は、ネットワーク１３００を介して、他の通信装置（サーバ装置１０２）との間で設定されるコネクションに基づいて他の通信装置（サーバ装置１０２）との間で設定されるストリームを介して通信可能に構成されている。また、サーバ装置１０２も同様に、ネットワーク１３００を介して、他の通信装置（クライアント装置１０１）との間で設定されるコネクションに基づいて他の通信装置（クライアント装置１０１）との間で設定されるストリームを介して通信可能に構成されている。クライアント装置１０１は、ネットワーク１３０２を介して、外部装置１３０３（配信装置）との間で設定されるコネクションに基づいて通信可能に構成されている。また、サーバ装置１０２は、ネットワーク１３０１を介して、外部装置１３０３（配信装置）との間で設定されるコネクションに基づいて通信可能に構成されている。
【００７１】
本実施形態における第１のネットワーク１３００、第２のネットワーク１３０１、第３のネットワーク１３０２は、例えば、インターネット、ＷＡＮ（Wide  Area  Network）、ＬＡＮ（Local  Area  Network）、等の複合であっても実現可能である。また、クライアント装置１０１、サーバ装置１０２、外部装置１３０３は、それぞれ、第１のネットワーク１３００、第２のネットワーク１３０１、第３のネットワーク１３０２を介さずに、直接接続しても良い。クライアント装置１０１、サーバ装置１０２、外部装置１３０３は、例えば、無線アドホックネットワークを用いて接続可能である。
【００７２】
図１４は、第２実施形態に係るクライアント装置１０１のハードウェア構成を示す図である。ここでは、第１実施形態で説明した内容との重複をさけるため、図２で説明したクライアント装置１０１のハードウェア構成との差異を記載する。ストリーム制御情報送信部１４１３は、ストリーム制御情報生成部２０２で生成したストリーム制御情報を外部装置１３０３に送信する。外部装置レスポンス受信部１４１４はストリーム制御情報送信部１４１３の送信に対応するレスポンスを受信する。
【００７３】
図１５は、第２実施形態に係るサーバ装置１０２のハードウェア構成を示す図である。ここでは、第１実施形態で説明した内容との重複をさけるため、図３で説明したサーバ装置１０２との差異を記載する。ストリーム制御情報受信部１５１６は外部装置１３０３からストリーム制御情報を受信する。メッセージ受信部１５１７はクライアント装置１０１にプッシュするメッセージを外部装置１３０３から受信する。
【００７４】
図１６は、外部装置１３０３のハードウェア構成を示す図である。外部装置１３０３を構成する各部はバス１６００に接続している。ストリーム制御情報受信部１６０１は、クライアント装置１０１からストリーム制御情報を受信する。レスポンス送信部１６０２は、ストリーム制御情報受信部１６０１の受信に対応するレスポンスを送信する。
【００７５】
ストリーム制御情報生成部１６０３は、ストリーム制御情報受信部１６０１で受信したストリーム制御情報から、サーバ装置１０２に送信するストリーム制御情報を生成する。ストリーム制御情報送信部１６０４は、ストリーム制御情報生成部１６０３で生成したストリーム制御情報をサーバ装置１０２に送信する。レスポンス受信部１６０５は、ストリーム制御情報送信部１６０４の送信に対応するレスポンス、及びメッセージ送信部１６０６の送信に対応するレスポンスを受信する。メッセージ送信部１６０６は、クライアント装置１０１にプッシュ配信するためのメッセージをサーバ装置１０２に送信する。
【００７６】
図１７は、クライアント装置１０１がストリーム数を制御するための第１のストリーム制御情報を作成し、第１のストリーム制御情報を外部装置１３０３に送信する際のフローチャートである。Ｓ１７０１において、プッシュ配信開始検知部２０１は、プッシュ配信開始を検知する。
【００７７】
Ｓ１７０２において、ストリーム制御情報生成部２０２は、ストリーム数を制御するための第１のストリーム制御情報を生成する。Ｓ１７０３において、ストリーム制御情報送信部１４１３はストリーム制御情報生成部２０２で生成した第１のストリーム制御情報を外部装置１３０３に送信する。Ｓ１７０４において、外部装置レスポンス受信部１４１４はストリーム制御情報送信部１４１３の送信に対応するレスポンスを受信し、Ｓ１７０５において、図５の処理を実行する。
【００７８】
図１８は外部装置１３０３がクライアント装置１０１から第１のストリーム制御情報を受信し、サーバ装置１０２に第２のストリーム制御情報を送信する際のフローチャートである。Ｓ１８０１において、ストリーム制御情報受信部１６０１は、クライアント装置１０１から第１のストリーム制御情報を受信する。
【００７９】
Ｓ１８０２において、レスポンス送信部１６０２は、ストリーム制御情報受信部１６０１の受信に対応するレスポンスをクライアント装置１０１に送信する。Ｓ１８０３において、ストリーム制御情報生成部１６０３は、ストリーム制御情報受信部１６０１で受信した第１のストリーム制御情報から、サーバ装置１０２に送信する第２のストリーム制御情報を生成する。
【００８０】
Ｓ１８０４において、ストリーム制御情報送信部１６０４は、ストリーム制御情報生成部１６０３で生成された第２のストリーム制御情報をサーバ装置１０２に送信する。Ｓ１８０５において、レスポンス受信部１６０５は、ストリーム制御情報送信部１６０４の送信に対応するレスポンスを受信する。
【００８１】
図１９は、外部装置１３０３から第２のストリーム制御情報を受信した際のサーバ装置１０２のフローチャートである。Ｓ１９０１において、ストリーム制御情報受信部１５１６は、外部装置１３０３から第２のストリーム制御情報を受信する。Ｓ１９０２において、レスポンス送信部３０７は、ストリーム制御情報受信部１６０１の受信に対応するレスポンスを送信する。Ｓ１９０３において、保存部３０５は、ストリーム制御情報受信部１５１６で受信した第２のストリーム制御情報を保存し、Ｓ１９０４において、図７の処理を実行する。
【００８２】
図２０はクライアント装置１０１がサーバ装置１０２を介して外部装置１３０３からプッシュ配信を行うための配信要求を行う際のシーケンスである。Ｍ２００１において、プッシュ配信開始検知部２０１は、プッシュ配信要求を検知する（Ｓ１７０１）。ストリーム制御情報生成部２０２は、アプリケーションが指定したストリーム数を第１のストリーム制御情報として生成する（Ｓ１７０２）。
【００８３】
Ｍ２００２において、ストリーム制御情報送信部１４１３はストリーム制御情報生成部２０２で生成された第１のストリーム制御情報を外部装置１３０３に送信する（Ｓ１７０３）。尚、本実施形態では外部装置１３０３に対するデータの送信をＨＴＴＰ／１．１のＰＯＳＴメソッドを用いているが、これはＨＴＴＰ／２やＦＴＰといったデータ送信可能な他の通信プロトコルを用いても良い。ストリーム制御情報受信部１６０１は、クライアント装置１０１から第１のストリーム制御情報を受信する（Ｓ１８０１）。
【００８４】
Ｍ２００３において、レスポンス送信部１６０２は、ストリーム制御情報受信部１６０１の受信に対応するレスポンスをクライアント装置１０１に送信する（Ｓ１８０２）。外部装置レスポンス受信部１４１４はストリーム制御情報送信部１４１３の送信に対応するレスポンスを受信し（Ｓ１７０４）、図５の処理に進む（Ｓ１７０５）。
【００８５】
Ｍ２００４において、ストリーム制御情報生成部１６０３は、ストリーム制御情報受信部１６０１で受信した第１のストリーム制御情報から、サーバ装置１０２に送信する第２のストリーム制御情報を生成する（Ｓ１８０３）。本実施形態では、第１のストリーム制御情報に含まれているストリーム数を第２のストリーム制御情報とするが、ストリーム数以外の情報でもよいし、第１のストリーム制御情報と外部装置１３０３が有するストリーム制御情報とから第２のストリーム制御情報を生成しても良い。第２のストリーム制御情報を生成する際に、外部装置１３０３が有するストリーム制御情報を含めて考慮することで、外部装置１３０３の性能を考慮したストリーム数の生成の制御が可能になり、外部装置１３０３に並列する配信装置が複数あった場合に特定の配信装置による通信帯域の圧迫を防止することが出来る。
【００８６】
Ｍ２００５において、ストリーム制御情報送信部１６０４は、ストリーム制御情報生成部１６０３で生成された第２のストリーム制御情報をサーバ装置１０２に送信する（Ｓ１８０４）。ストリーム制御情報受信部１５１６は、外部装置１３０３から第２のストリーム制御情報を受信する（Ｓ１９０１）。
【００８７】
Ｍ２００６において、レスポンス送信部３０７は、ストリーム制御情報受信部１６０１の受信に対応するレスポンスを送信する（Ｓ１９０２）。レスポンス受信部１６０５は、ストリーム制御情報送信部１６０４の送信に対応するレスポンスを受信する（Ｓ１８０５）。
【００８８】
Ｍ２００７において、保存部３０５は、ストリーム制御情報受信部１５１６で受信した第２のストリーム制御情報を保存し（Ｓ１９０３）、図７の処理に進む（Ｓ１９０４）。Ｍ２００８において、ストリーム生成部２０３は、プッシュ配信要求部２０４でサーバ装置１０２と通信するためのストリームを生成（本実施形態ではＳＴ００００３）する（Ｓ５０１）。
【００８９】
Ｍ２００９において、プッシュ配信要求部２０４はサーバ装置１０２にプッシュ配信要求する（Ｓ５０２）。プッシュ配信要求受信部３０１は、クライアント装置１０１からプッシュ配信要求を受信する（Ｓ７０１）。ストリーム数決定部３０２は、保存部３０５で保存した第２のストリーム制御情報からプッシュメッセージ送信できるアクティブなストリーム数を決定し（Ｓ７０２）、配信判定部３０３は、プッシュ配信可能と判定する（Ｓ７０３−Ｙｅｓ）。尚、ストリーム数決定部３０２にてストリーム数を決定する時に、第２のストリーム制御情報が保存されていなかった場合、第２のストリーム制御情報が保存されるまで待機しても良いし、サーバ装置１０２が有する第３のストリーム制御情報を用いても良いし、クライアント装置１０１にエラーレスポンスを送信しても良い。ここで、第３のストリーム制御情報は、第２のストリーム制御情報と異なるストリーム制御情報である。
【００９０】
Ｍ２０１０において、ストリーム生成部３０４はストリーム数決定部３０２が決定したストリーム数分、ストリームを生成する（本実施形態ではＳＴ００００４、ＳＴ００００６、ＳＴ００００８）する（図８のＳ８０１）。ストリーム生成部３０４は生成したストリームのストリームＩＤを図１２のリストに追加する。保存部３０５はストリーム数決定部３０２が決定したストリーム数（３）をプッシュ配信ストリーム数として保存する（Ｓ８０２）。
【００９１】
Ｍ２０１１〜２０１３において、レスポンス生成部３０６はプッシュ予約メッセージを作成し（Ｓ８０３）、レスポンス送信部３０７は、レスポンス生成部３０６で生成されたプッシュ予約メッセージをクライアント装置１０１に送信する（Ｓ８０４）。ここで、レスポンス生成部３０６は、プッシュメッセージ（配信メッセージ）を送信するためのストリームの識別子情報を生成する生成部として機能し、レスポンス送信部３０７は、プッシュメッセージ（配信メッセージ）を送信するためのストリームの識別子情報を送信する識別子送信部として機能する。プッシュ予約メッセージは、ストリームの識別子情報に対応するPUSH_PROMISEフレームを示す。レスポンス受信部２０５は、サーバ装置１０２からのレスポンスを受信する。ここで、レスポンス受信部２０５は、配信メッセージを受信するためのストリームの識別子情報を受信する識別子受信部として機能する。レスポンス受信部２０５（識別子受信部）が受信するストリームの識別子情報は、サーバ装置１０２が、外部装置１３０３（配信装置）との通信を介して取得した、ストリームの数を制御するための情報に基づいて生成される。以降のプッシュ予約メッセージの受信処理は、第１実施形態にて記述済みのため省略する。
【００９２】
本実施形態において、クライアント装置１０１は、プッシュ配信要求時にあらかじめ第１のストリーム制御情報を外部装置１３０３に送信し、外部装置１３０３のストリーム制御情報生成部１６０３にて生成した第２のストリーム制御情報をサーバ装置１０２に送信し、サーバ装置１０２のストリーム数決定部３０２で決定したストリーム数に基づいて、クライアント装置１０１に対してプッシュ予約を行う。これにより、外部装置１３０３のプッシュ配信頻度が低い場合に過剰にプッシュ予約を行わなくて済むようになり、クライアント装置１０１のリソースを低減することが可能になる。
【００９３】
（第３実施形態）
本発明の第３実施形態について、図面を参照して説明する。図２１は外部装置１３０３（配信装置）のハードウェア構成を示す図である。ここでは、第２実施形態で説明した内容との重複をさけるため、図１６で説明した外部装置１３０３のハードウェア構成との差異を記載する。
【００９４】
ストリーム生成部２１０１は、プッシュ配信要求部２１０２にてサーバ装置１０２と通信するストリームを生成する。プッシュ配信要求部２１０２は、サーバ装置１０２にプッシュ配信要求を行う。レスポンス判定部２１０３は、レスポンス受信部１６０５で受信したレスポンス内容を解析し、プッシュ予約のレスポンスか、プッシュ完了のレスポンスか、プッシュ配信要求エラーのレスポンスかを判定する。ストリーム予約部２１０４は、サーバ装置１０２が指定したストリームＩＤの予約を行う。
【００９５】
表示部２１０５は、サーバ装置１０２からエラーレスポンスを受信した際にエラー画面を表示する。プッシュメッセージ受信部２１０６は、サーバ装置１０２からプッシュメッセージを受信する。プッシュメッセージ判定部２１０７は、プッシュメッセージ受信部２１０６で受信したプッシュメッセージを解析し、予約したストリームか否かを判定する。プッシュレスポンス送信部２１０８は、プッシュレスポンスを送信する。ストリーム削除部２１０９は、サーバ装置１０２と通信するストリームを削除する。
【００９６】
図２２はＨＴＴＰ／２を使用した通信において、外部装置１３０３がサーバ装置１０２にプッシュ配信要求を行う際の外部装置１３０３のフローチャートである。Ｓ２２０１において、ストリーム生成部２１０１は、プッシュ配信要求部２１０２でサーバ装置１０２と通信するためのストリームを生成する。
【００９７】
Ｓ２２０２において、プッシュ配信要求部２１０２はサーバ装置１０２にプッシュ配信要求する。以降、サーバ装置１０２からプッシュ完了もしくはプッシュ配信要求エラーを示すレスポンスを受信するまで、ループ処理を行う（Ｓ２２０３〜Ｓ２２０７）。Ｓ２２０４において、レスポンス受信部１６０５は、サーバ装置１０２からのレスポンスを受信する。
【００９８】
Ｓ２２０５において、レスポンス判定部２１０３は、レスポンス内容が、プッシュ予約か否かを判定する。プッシュ予約のレスポンスであれば（Ｓ２２０５−Ｙｅｓ）、Ｓ２２０６に進み、プッシュ予約のレスポンスでなければ（Ｓ２２０５−Ｎｏ）、Ｓ２２０３のループを抜け、Ｓ２２０８に進む。Ｓ２２０６において、ストリーム予約部２１０４はレスポンス受信部１６０５で受信したレスポンスに含まれるストリームＩＤを予約する。ここで、ストリームＩＤの予約は、ストリームＩＤ対応したストリームの生成、及び、図１２のプッシュ予約リストにストリームＩＤを追加することを示す。
【００９９】
Ｓ２２０８において、レスポンス判定部２１０３は、レスポンス内容が、エラーレスポンスか否かを判定する。エラーレスポンスの場合（Ｓ２２０８−Ｙｅｓ）、Ｓ２２０９に進み、プッシュ配信完了を示すレスポンスの場合（Ｓ２２０８−Ｎｏ）、Ｓ２２１０に進む。Ｓ２２０９において、表示部２１０５は、図１１（ａ）のエラー表示を行う。そして、Ｓ２２１０において、ストリーム削除部２１０９は、ストリーム生成部２１０１で生成されたストリームと図１２に登録されているストリームを削除する。
【０１００】
図２３はＨＴＴＰ／２を使用した通信において、外部装置１３０３がサーバ装置１０２からプッシュメッセージ受信を行った際の外部装置１３０３のフローチャートである。Ｓ２３０１において、プッシュメッセージ受信部２１０６は、サーバ装置１０２からプッシュメッセージの受信を行う。
【０１０１】
Ｓ２３０２において、プッシュメッセージ判定部２１０７は、プッシュメッセージ受信部２１０６で受信したプッシュメッセージが予約したストリームからの受信かを判定する。予約したストリームからの受信の場合（Ｓ２３０２−Ｙｅｓ）、Ｓ２３０３に進み、予約したストリームからの受信でない場合（Ｓ２３０２−Ｎｏ）、Ｓ２３０４に進む。Ｓ２３０３において、プッシュレスポンス送信部２１１は、プッシュメッセージ受信部２１０６で受信したプッシュメッセージに対応するプッシュレスポンスをサーバ装置１０２に送信する。予約したストリームからの受信の場合は完了レスポンスをサーバ装置１０２に送信する。
【０１０２】
Ｓ２３０４において、予約したストリームからの受信でない場合、プッシュレスポンス送信部２１１は、エラーレスポンスを送信する。尚、プッシュメッセージが複数個に分割されている場合は、プッシュメッセージを全て受信してから、プッシュレスポンス送信部２１１はレスポンスを送信することが可能である。Ｓ２３０５において、ストリーム削除部２１０９は、プッシュメッセージ受信部２１０６で受信したストリームを削除する。
【０１０３】
図２４は外部装置１３０３がサーバ装置１０２を介してクライアント装置１０１からプッシュ配信を行うための配信要求を行う際のシーケンスである。本シーケンスは、例えば、サーバ装置１０２がクライアント装置１０１にプッシュ配信が正常に完了したかをサーバ装置１０２が外部装置１３０３にプッシュを行うことで通知するような場合に使用される。
【０１０４】
Ｍ２４０１において、プッシュ配信開始検知部２０１は、プッシュ配信要求を検知する（Ｓ１７０１）。ストリーム制御情報生成部２０２は、アプリケーションが指定したストリーム数を第１のストリーム制御情報として生成する（Ｓ１７０２）。Ｍ２４０２において、ストリーム制御情報送信部１４１３はストリーム制御情報生成部２０２で生成された第１のストリーム制御情報を外部装置１３０３に送信する（Ｓ１７０３）。尚、本実施形態では外部装置１３０３に対するデータの送信をＨＴＴＰ／１．１のＰＯＳＴメソッドを用いているが、これはＨＴＴＰ／２やＦＴＰといったデータ送信可能な他の通信プロトコルを用いても良い。ストリーム制御情報受信部１６０１は、クライアント装置１０１から第１のストリーム制御情報を受信する（Ｓ１８０１）。
【０１０５】
Ｍ２４０３において、レスポンス送信部１６０２は、ストリーム制御情報受信部１６０１の受信に対応するレスポンスをクライアント装置１０１に送信する（Ｓ１８０２）。外部装置レスポンス受信部１４１４はストリーム制御情報送信部１４１３の送信に対応するレスポンスを受信する（Ｓ１７０４）。Ｍ２４０４において、ストリーム制御情報生成部１６０３は、ストリーム制御情報受信部１６０１で受信した第１のストリーム制御情報から、サーバ装置１０２に送信する第２のストリーム制御情報を生成する（Ｓ１８０３）。本実施形態では、第１のストリーム制御情報に含まれているストリーム数を第２のストリーム制御情報とするが、ストリーム数以外の情報でもよいし、第１のストリーム制御情報と外部装置１３０３が有するストリーム制御情報とから第２のストリーム制御情報を生成しても良い。第２のストリーム制御情報を生成する際に、外部装置１３０３が有するストリーム制御情報を含めて考慮することで、外部装置１３０３の性能を考慮したストリーム数の生成の制御が可能になり、外部装置１３０３に並列する配信装置が複数あった場合に特定の配信装置による通信帯域の圧迫を防止することが出来る。
【０１０６】
Ｍ２４０５において、ストリーム制御情報送信部１６０４は、ストリーム制御情報生成部１６０３で生成された第２のストリーム制御情報をサーバ装置１０２に送信する（Ｓ１８０４）。ストリーム制御情報受信部１５１６は、外部装置１３０３から第２のストリーム制御情報を受信する（Ｓ１９０１）。Ｍ２４０６において、レスポンス送信部３０７は、ストリーム制御情報受信部１６０１の受信に対応するレスポンスを送信する（Ｓ１９０２）。レスポンス受信部１６０５は、ストリーム制御情報送信部１６０４の送信に対応するレスポンスを受信する（Ｓ１８０５）。
【０１０７】
Ｍ２４０７において、保存部３０５は、ストリーム制御情報受信部１５１６で受信した第２のストリーム制御情報を保存し（Ｓ１９０３）、図７の処理に進む（Ｓ１９０４）。Ｍ２４０８において、ストリーム生成部２１０１は、プッシュ配信要求部２１０２でサーバ装置１０２と通信するためのストリームを生成（本実施形態ではＳＴ００００３）する（Ｓ２２０１）。Ｍ２４０９において、プッシュ配信要求部２１０２はサーバ装置１０２にプッシュ配信要求する（Ｓ２２０２）。プッシュ配信要求受信部３０１は、外部装置１３０３からプッシュ配信要求を受信する（Ｓ７０１）。ストリーム数決定部３０２は、保存部３０５で保存した第２のストリーム制御情報からプッシュメッセージ送信できるアクティブなストリーム数を決定し（Ｓ７０２）、配信判定部３０３は、プッシュ配信可能と判定する（Ｓ７０３−Ｙｅｓ）。尚、ストリーム数決定部３０２にてストリーム数を決定する時に、第２のストリーム制御情報が保存されていなかった場合、第２のストリーム制御情報が保存されるまで待機しても良いし、サーバ装置１０２が有する第３のストリーム制御情報を用いても良いし、外部装置１３０３にエラーレスポンスを送信しても良い。ここで、第３のストリーム制御情報は、第２のストリーム制御情報と異なるストリーム制御情報である。
【０１０８】
Ｍ２０１０において、ストリーム生成部３０４はストリーム数決定部３０２が決定したストリーム数分、ストリームを生成する（本実施形態ではＳＴ００００４、ＳＴ００００６、ＳＴ００００８）する（図８のＳ８０１）。ストリーム生成部３０４は生成したストリームのストリームＩＤを図１２のリストに追加する。保存部３０５はストリーム数決定部３０２が決定したストリーム数（３）をプッシュ配信ストリーム数として保存する（Ｓ８０２）。Ｍ２４１１〜２４１３において、レスポンス生成部３０６はプッシュ予約メッセージを作成し（Ｓ８０３）、レスポンス送信部３０７は、レスポンス生成部３０６で生成されたプッシュ予約メッセージを外部装置１３０３に送信する（Ｓ８０４）。本実施形態でのプッシュ予約メッセージはPUSH_PROMISEフレームのことを示す。レスポンス受信部１６０５は、サーバ装置１０２からのレスポンスを受信する（Ｓ２２０４）。レスポンス判定部２１０３は、レスポンス内容が、プッシュ予約であると判定し（Ｓ２２０５−Ｙｅｓ）、ストリーム予約部２１０４はレスポンス受信部１６０５で受信したレスポンスに含まれるストリームＩＤに対応したストリームの生成、及び、図１２のプッシュ予約リストへの追加（本実施形態ではＳＴ００００４、ＳＴ００００６、ＳＴ００００８）を行う（Ｓ５０６）。
【０１０９】
Ｍ２４１４において、プッシュイベント検知部３０８はプッシュイベントを検知し（Ｓ８０６）、プッシュメッセージ生成部３０９はプッシュメッセージの生成を行なう（Ｓ８０７）。本実施形態でのプッシュイベントは第１実施形態で示すようなサーバ装置１０２がクライアント装置１０１にプッシュ配信を行った場合に、クライアント装置１０１がプッシュ配信を受信完了したことをトリガとする。これにより、外部装置１３０３がサーバ装置１０２を介してクライアント装置１０１にプッシュ配信を行った場合に、プッシュ配信が正常にクライアント装置１０１に届いたことを外部装置１３０３が検知することが可能となる。
【０１１０】
Ｍ２４１５において、プッシュメッセージ送信部３１０は、プッシュメッセージを外部装置１３０３に送信する（Ｓ８０８）。プッシュメッセージ受信部２１０６は、サーバ装置１０２からプッシュメッセージの受信を行う（Ｓ２３０１）。プッシュメッセージ判定部２１０７は、予約したストリームからの受信（ＳＴ００００４）であると判定する（Ｓ２３０２−Ｙｅｓ）。
【０１１１】
Ｍ２４１６において、プッシュレスポンス送信部２１０８は、プッシュメッセージに対応するプッシュレスポンスをサーバ装置１０２に送信する。プッシュレスポンス受信部３１１は、プッシュレスポンスを受信し（Ｓ８０９）、プッシュレスポンス解析部３１２はプッシュメッセージが正常に送信したと判定する（Ｓ８１０−Ｙｅｓ）。
【０１１２】
Ｍ２４１７において、ストリーム削除部２１０９は、プッシュメッセージ受信部２１０６で受信したストリーム（ＳＴ００００４）を削除する（Ｓ２３０５）。Ｍ２４１８において、ストリーム削除部３１４は、プッシュメッセージ送信部３１０で送信したプッシュメッセージに対応するストリームを削除する（Ｓ８１２）。ストリーム削除部３１４は、削除したストリームのストリームＩＤを図１２のリストから削除する。
【０１１３】
Ｍ２４１９において、ストリーム生成部３０４はストリームを生成（本実施形態ではＳＴ０００１０）する（Ｓ８１３）。ストリーム生成部３０４は、生成したストリームのストリームＩＤを図１２のリストに追加する。Ｍ２４２０において、レスポンス生成部３０６はプッシュ予約メッセージを作成し（Ｓ８１４）、レスポンス送信部３０７は、レスポンス生成部３０６で生成したプッシュ予約メッセージを外部装置１３０３に送信する（Ｓ８１５）。レスポンス受信部１６０５は、サーバ装置１０２からのレスポンスを受信する（Ｓ２２０４）。レスポンス判定部２１０３は、レスポンス内容が、プッシュ予約であると判定し（Ｓ２２０５−Ｙｅｓ）、ストリーム予約部２１０４はレスポンス受信部１６０５で受信したレスポンスに含まれるストリームＩＤに対応したストリームの生成、及び、図１２のプッシュ予約リストへの追加（本実施形態ではＳＴ０００１０）を行う（Ｓ２２０６）。
【０１１４】
Ｍ２４２１において、プッシュ完了検知部３１５はプッシュ完了を検知し（Ｓ８０５でループ終了）、保存部３０５で保存しているプッシュ配信ストリーム数からストリーム数決定部３０２が決定したストリーム数（３）を減算し、減算結果を保存する（Ｓ８１７）。Ｍ２４２２において、レスポンス送信部３０７は、プッシュ配信要求受信部３０１で受信したプッシュ配信要求に対応する完了レスポンス（ステータスコード：２００ ＯＫ）を送信する（Ｓ７０５）。レスポンス受信部１６０５は、サーバ装置１０２からのレスポンスを受信し（Ｓ２２０４）、レスポンス判定部２１０３は、レスポンス内容が、プッシュ予約でなく（Ｓ２２０５−Ｎｏ）、エラーレスポンスでないと判定する（Ｓ２２０８−Ｎｏ）。Ｍ２４２３において、ストリーム削除部２１０９は、生成されたストリーム（本実施形態ではＳＴ００００３、ＳＴ００００６、ＳＴ００００８、ＳＴ０００１０）を削除する（Ｓ２２１０）。Ｍ２４２４において、ストリーム削除部３１４は、生成されたストリーム（本実施形態ではＳＴ００００３、ＳＴ００００６、ＳＴ００００８、ＳＴ０００１０）を削除する（Ｓ８１８）。
【０１１５】
以上、本実施形態において、クライアント装置１０１は、プッシュ配信要求時にあらかじめ第１のストリーム制御情報を外部装置１３０３に送信し、ストリーム制御情報生成部１６０３にて生成した第２のストリーム制御情報をサーバ装置１０２に送信し、ストリーム数決定部３０２で決定したストリーム数に基づいて、外部装置１３０３に対してプッシュ予約を行う。これにより、外部装置１３０３のリソースを超えるサーバ装置１０２からのストリーム予約を受けることが無くなり、外部装置１３０３が高負荷になることを防ぐことが出来る。
【０１１６】
また、外部装置１３０３がサーバ装置１０２を介してクライアント装置１０１にプッシュ配信する際に、外部装置１３０３が高負荷でプッシュ配信をキャンセルできなくなることを防ぐことが出来る。
【０１１７】
更に、本実施形態においてストリーム数決定部３０２で決定したストリーム数を変更することができる。ストリーム数の変更はＭ２４０５〜Ｍ２４０７のシーケンスもしくはＭ２４０２〜Ｍ２４０７を再度行うことで可能である。ストリーム数決定部３０２で決定したストリーム数が増えた場合は増加したストリーム数分、ストリームの予約を行う。ストリーム数決定部３０２で決定したストリーム数が減った場合は、サーバ装置１０２から外部装置１３０３に対して増加したストリーム数分のキャンセルを行ないストリームの削除を行う。キャンセルするストリームは図１２に示すリストの上からでも下からでも良い。また、外部装置１３０３がサーバ装置１０２に送信する第２のストリーム制御情報にストリームＩＤを含めても良い。これにより、クライアント装置１０１または、外部装置１３０３の処理負荷の変更に応じてストリーム数の変更が可能となり、ストリーム数を減らせば、クライアント装置１０１または外部装置１３０３が高負荷になることを防ぐことができ、ストリーム数を増やせば、プッシュ配信の処理効率の向上を図ることが可能になる。
【０１１８】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１１９】
１０１：クライアント装置、１０２：サーバ装置、２０２：ストリーム制御情報生成部、１３０３：外部装置
【図１】
0006700981.tif 000002
【図２】
0006700981.tif 000003
【図３】
0006700981.tif 000004
【図４】
0006700981.tif 000005
【図５】
0006700981.tif 000006
【図６】
0006700981.tif 000007
【図７】
0006700981.tif 000008
【図８】
0006700981.tif 000009
【図９】
0006700981.tif 000010
【図１０】
0006700981.tif 000011
【図１１】
0006700981.tif 000012
【図１２】
0006700981.tif 000013
【図１３】
0006700981.tif 000014
【図１４】
0006700981.tif 000015
【図１５】
0006700981.tif 000016
【図１６】
0006700981.tif 000017
【図１７】
0006700981.tif 000018
【図１８】
0006700981.tif 000019
【図１９】
0006700981.tif 000020
【図２０】
0006700981.tif 000021
【図２１】
0006700981.tif 000022
【図２２】
0006700981.tif 000023
【図２３】
0006700981.tif 000024
【図２４】
0006700981.tif 000025