(57)【要約】【課題】ＩＰネットワークを利用したプッシュ型メッセージ配信において、プッシュサーバの資源消費と通信負荷とを低減することができるメッセージ配信システムおよびメッセージ配信方法を提供する。【解決手段】通信端末宛のメッセージ送信要求を受け付けると、自装置と宛先の通信端末との間にコネクションが確立されている場合には、当該コネクションを通して、プッシュ型でメッセージを送信し、当該コネクションが確立されていない場合には、コネクションを要求するためのトリガを宛先の通信端末に送信するメッセージ送信部１１を含む配信装置１０と、配信装置１０からトリガを受信すると、配信装置１０とのコネクションを確立し、当該コネクションを通して自端末宛のメッセージを配信装置１０から取得し、メッセージ取得後当該コネクションを維持するメッセージ受信部２１−１〜２１−ｎを含む通信端末２０−１〜２０−ｎとを備える。【選択図】図９
2014146876.tif 000002
【特許請求の範囲】
【請求項１】
メッセージ配信を行う配信装置と、通信端末とを備え、
前記配信装置は、
通信端末宛のメッセージ送信要求を受け付けると、自装置と宛先の通信端末との間にコネクションが確立されている場合には、当該コネクションを通して、プッシュ型でメッセージを送信し、当該コネクションが確立されていない場合には、コネクションを要求するためのトリガを宛先の通信端末に送信するメッセージ送信部を含み、
前記通信端末は、
前記配信装置から前記トリガを受信すると、前記配信装置とのコネクションを確立し、当該コネクションを通して自端末宛のメッセージを前記配信装置から取得し、メッセージ取得後当該コネクションを維持するメッセージ受信部を含む
ことを特徴とするメッセージ配信システム。
【請求項２】
配信装置は、各通信端末との間に確立したコネクションの有効期限を示すタイムアウト値を保持する接続状態記憶部と、前記接続状態記憶部が保持する前記タイムアウト値を参照し、前記タイムアウト値が示す時刻を過ぎたコネクションを切断する接続制御部とを備える
請求項１に記載のメッセージ配信システム。
【請求項３】
メッセージ送信部は、メッセージ送信要求を受け付けた際に、宛先の通知端末との間にコネクションが確立されている場合には、接続状態記憶部が保持する当該コネクションに対応するタイムアウト値を更新し延長する
請求項２に記載のメッセージ配信システム。
【請求項４】
メッセージ送信部は、宛先の通信端末との間に既に確立されたコネクションを通したメッセージの送信に失敗した場合に、当該宛先の通信端末にトリガを送信する
請求項１から請求項３のうちのいずれか１項に記載のメッセージ配信システム。
【請求項５】
メッセージ送信部は、メッセージ送信要求を受け付けた際に、接続状態記憶部が保持する、各通信端末との間のコネクションの有無を示す情報を参照し、宛先の通信端末との間にコネクションが確立されているか否かを判定する
請求項２から請求項４のうちのいずれか１項に記載のメッセージ配信システム。
【請求項６】
メッセージ配信を行う配信装置が、通信端末宛のメッセージ送信要求を受け付けると、自装置と宛先の通信端末との間にコネクションが確立されている場合には、当該コネクションを通してプッシュ型でメッセージを送信し、当該コネクションが確立されていない場合には、コネクションを要求するためのトリガを宛先の通信端末に送信し、
通信端末が、前記配信装置から前記トリガを受信すると、前記配信装置とのコネクションを確立し、当該コネクションを通して自端末宛のメッセージを前記配信装置から取得し、メッセージ取得後当該コネクションを維持する
ことを特徴とするメッセージ配信方法。
【請求項７】
配信装置が、各通信端末との間に確立したコネクションの有効期限を示すタイムアウト値を保持し、前記タイムアウト値が示す時刻を過ぎたコネクションを切断する
請求項６に記載のメッセージ配信方法。
【請求項８】
配信装置が、メッセージ送信要求を受け付けた際に、宛先の通知端末との間にコネクションが確立されている場合には、当該コネクションに対応するタイムアウト値を更新し延長する
請求項７に記載のメッセージ配信方法。
【請求項９】
配信装置が、宛先の通信端末との間に既に確立されたコネクションを通したメッセージの送信に失敗した場合に、当該宛先の通信端末にトリガを送信する
請求項６から請求項８のうちのいずれか１項に記載のメッセージ配信方法。
【請求項１０】
配信装置が、各通信端末との間のコネクションの有無を示す情報を保持し、メッセージ送信要求を受け付けた際に、各通信端末との間のコネクションの有無を示す前記情報を参照し、宛先の通信端末との間にコネクションが確立されているか否かを判定する
請求項６から請求項９のうちのいずれか１項に記載のメッセージ配信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プッシュ型のメッセージ配信を行うメッセージ配信システムおよびメッセージ配信方法に関する。
【背景技術】
【０００２】
ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ネットワークや携帯電話網などのネットワークを利用して、サーバからクライアントに対してメッセージを送る方法として、クライアントからの要求によらずに、サーバからクライアントにメッセージを送信する「サーバ起点のメッセージ送信方式（以下、単にサーバ起点のメッセージ送信という。）」がある。また、クライアントからのメッセージ送信要求に対する応答として、サーバからクライアントにメッセージを送信する「クライアント起点のメッセージ取得方式（以下、単にクライアント起点のメッセージ取得という。）」がある。図１１は、サーバ起点のメッセージ送信およびクライアント起点のメッセージ取得によるメッセージ送受信の様子を示す説明図である。
【０００３】
図１１（Ａ）に示すサーバ起点のメッセージ送信では、クライアントは、常にメッセージを待ち受けている。サーバは、任意の時点でクライアントにメッセージを送ることができる。サーバ起点のメッセージ送信は、クライアントとサーバとの間でコネクションを維持せずに、メッセージ送信時にサーバからコネクションを確立する、狭義のプッシュ型メッセージ送信である。サーバ起点のメッセージ送信の一例として、携帯電話回線を用いたショートメッセージサービス（Ｓｈｏｒｔ  Ｍｅｓｓａｇｅ  Ｓｅｒｖｉｃｅ，ＳＭＳ）によるメッセージ送信がある。また、別の例として、クライアント側はＴＣＰ接続を待ち受け、サーバからクライアントにＴＣＰ接続する方法がある。
【０００４】
サーバ起点のメッセージ送信では、直接的に、クライアントからの要求によらないメッセージ送信、すなわちプッシュ型メッセージ送信が実現できるものの、以下に示すような課題がある。
【０００５】
例えば、サーバからクライアントに対するＴＣＰ接続、ＵＤＰ接続、Ｒａｗ  ＩＰパケットを使用した接続は、クライアントへの攻撃手段となり得るため、第三者による攻撃を避けるためにネットワーク機器により遮断される可能性がある。また、サーバからクライアントに対するＴＣＰ接続等がネットワーク機器によって遮断されずに許可されたとしても、悪意のある第三者によるメッセージ送信により、クライアントが異常動作する可能性がある。クライアントの異常動作は、例えば、クライアントに蓄積された個人情報の外部サイトへの送信である。
【０００６】
また、例えば、移動通信端末がＳＭＳでショートメッセージを受信する場合、移動通信端末が携帯電話網に接続されている必要がある。つまり、移動通信端末が携帯電話網に接続されていないときには、移動通信端末はショートメッセージを受信することができない。また、ＳＭＳでは移動通信端末は短いテキストメッセージしか受信することができない。
【０００７】
図１１（Ｂ）に示すクライアント起点のメッセージ取得では、クライアントがサーバからメッセージを取得するときに、クライアントからサーバに対してメッセージ取得要求が送信され、その応答（レスポンス）にメッセージの内容が含まれる。クライアント起点のメッセージ取得の一例は、ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）を用いたメッセージの取得である。典型的に、メッセージ取得要求とその応答は、同一のコネクション、例えばＴＣＰコネクションを通して送受信される。図１１（Ｂ）の網掛け部分は同一のコネクションを表す。
【０００８】
図１１（Ｂ）に示すようなクライアント起点のメッセージ取得が以下の方式のように変形されることにより、擬似的にプッシュ型メッセージ送信を実現することができる。
【０００９】
（１）周期ポーリング方式
周期ポーリング方式では、クライアントが、一定時間ごとにサーバにメッセージ取得要求を送信することで、サーバからメッセージを取得する。つまり、周期ポーリング方式では、クライアント主導で一定時間ごとにサーバとのコネクションが確立され、クライアントは、サーバに蓄積されているメッセージを取得する。この方式では、クライアントにメッセージが到着するのは、クライアントがメッセージ取得要求を送信したタイミングに限られる。
【００１０】
図１２は、ＨＴＴＰを用いた周期ポーリング方式によるメッセージ送受信の様子を示す説明図である。クライアントは、一定時間（ポーリング周期）ごとにサーバに対してＨＴＴＰリクエストを送信する。そのクライアント宛のメッセージがサーバに蓄積されている場合には、ＨＴＴＰレスポンスにはそのメッセージの内容が含まれる。そうでない場合は空のＨＴＴＰレスポンスが返される。
【００１１】
周期ポーリング方式では、クライアント宛のメッセージが存在しない場合でも、一定時間ごとにメッセージ取得要求が送られるため、メッセージ送信に寄与しない通信トラフィックが生じるという課題がある。また、サーバにメッセージが蓄積されてからクライアントがそのメッセージを取得するまでに、最大でポーリング間隔に一致する遅延が生じるという課題がある。
【００１２】
（２）コネクション維持方式
コネクション維持方式では、クライアント主導で確立されたコネクションが長時間維持される。そのコネクションを通してサーバはクライアントにメッセージを送信する。周期ポーリングと異なり、コネクションが常時維持されるため、サーバは任意のタイミングでクライアントにメッセージを送信することができる。
【００１３】
コネクション維持方式の一例として、ロングポーリング（ｌｏｎｇ  ｐｏｌｌｉｎｇ）方式（以下、単にロングポーリングという。）が知られている。図１３は、ロングポーリングによるメッセージ送受信の様子を示す説明図である。
【００１４】
ロングポーリングでは、クライアントは、サーバに対してＨＴＴＰリクエストを送る。そのクライアント宛のメッセージがサーバに到着するか、一定時間が経過してタイムアウトになったかのいずれかの時点で、サーバが、ＨＴＴＰレスポンスを返す。前者の場合、ＨＴＴＰレスポンスには、到着したメッセージの内容が含まれる。いずれの場合も、クライアントは、ＨＴＴＰレスポンス受信後、再度サーバにＨＴＴＰリクエストを送り、同じ動作を繰り返す。
【００１５】
ロングポーリングは、一般的に、ＴＣＰネクション確立・切断に伴う通信トラフィックを削減するために、しばしば、非特許文献１に記載されたＨＴＴＰキープアライブ（ＨＴＴＰ  Ｋｅｅｐ−Ａｌｉｖｅ）と組み合わせて用いられる。ＨＴＴＰキープアライブは、同一のＴＣＰコネクションを再利用する機能である。
【００１６】
コネクション維持方式では、メッセージ送信の有無に関わらず、すべてのクライアントとサーバとの間で常時コネクションが維持される必要がある。そのため、クライアント数に比例した大きさ（サイズ）のサーバ資源、主にメモリが常時占有されるという課題がある。
【００１７】
特許文献１には、サーバ起点のトリガ送信と、クライアント起点のメッセージ取得とを組合せた方法が記載されている。特許文献１に記載された方法では、サーバから送信されたトリガをクライアントが受信した後で、クライアント起点でメッセージ本体を取得する。従って、特許文献１に記載された方法によれば、サーバ起点のメッセージ送信に起因する課題、例えば、上述した悪意のある第三者からの攻撃や、メッセージサイズの制限を解決することができる。
【００１８】
特許文献２には、コンテンツ情報を提供するコンテンツサーバが、ユーザ端末からの呼出しに応じて、更新されたコンテンツ情報をプッシュサーバを介して、プッシュ型でユーザ端末に配信するシステムが記載されている。特許文献２に記載されたシステムは、コンテンツサーバにおいてコンテンツ情報が更新されると、コンテンツサーバが、プッシュサーバに呼出し要求を通知する。プッシュサーバは、通知された呼出し要求に応じてユーザ端末にトリガメッセージを送信する。ユーザ端末は、受信したトリガメッセージに応じてコンテンツサーバを呼出し、コンテンツサーバから更新されたコンテンツ情報を取得する。
【先行技術文献】
【特許文献】
【００１９】
【特許文献１】特開２００４−１２９０８４号公報
【特許文献２】特開２００２−３４４５２９号公報
【非特許文献】
【００２０】
【非特許文献１】ＲＦＣ  ２６１６  “Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ  −−  ＨＴＴＰ／１．１”，  Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ，  １９９９．
【発明の概要】
【発明が解決しようとする課題】
【００２１】
図１４は、サーバ起点のトリガ送信とクライアント起点のメッセージ取得とを組合せた方法によるメッセージ送受信の様子を示す説明図である。特許文献１に記載された方法では、図１４に示すように、サーバがクライアントにメッセージを送る際に、サーバは、メッセージ送信手段を用いてクライアントにトリガと呼ぶ短い電文を送信する。ここで、トリガ自身にメッセージは含まれない。サーバ起点のトリガを受信したクライアントは、サーバに対してメッセージ取得要求を送信することで、クライアント宛のメッセージを取得する。
【００２２】
図１４に示された方法を用いた場合、任意のタイミングでクライアントにメッセージを届けることができる。また、サーバ起点のメッセージ送信方式のみを使う場合よりも、悪意のある第三者による攻撃に対して高い耐性を維持することができる。その理由は、メッセージ自体をクライアント起点で取得するため、クライアントが、信用するサーバ以外にはメッセージ取得要求を送信しないといった対策をとることができるからである。
【００２３】
また、図１４に示された方法は、クライアントとサーバ間でコネクションを常時維持する必要がないため、サーバ起点のメッセージ送信と同様に、コネクション維持のためのサーバ資源が必要ないという利点がある。
【００２４】
しかし、クライアントにメッセージを届けるために「サーバ起点のトリガ送信」による通信と「クライアント起点のメッセージ取得」による通信との２種類の通信が必要とされる。そのため、その方法を用いた場合、メッセージそのものの送信に必要な通信トラフィックに対して最大２倍の通信トラフィックが発生する。つまり、狭義のプッシュ型メッセージ配信に対して最大２倍の通信トラフィックが発生する。従って、当該方法は、クライアントの電力消費およびネットワーク負荷の観点で課題がある。
【００２５】
そこで、本発明は、ＩＰネットワークを利用したプッシュ型メッセージ配信において、プッシュサーバの資源消費と通信負荷とを低減することができるメッセージ配信システムおよびメッセージ配信方法を提供することを目的とする。
【課題を解決するための手段】
【００２６】
本発明によるメッセージ配信システムは、メッセージ配信を行う配信装置と、通信端末とを備え、配信装置は、通信端末宛のメッセージ送信要求を受け付けると、自装置と宛先の通信端末との間にコネクションが確立されている場合には、当該コネクションを通して、プッシュ型でメッセージを送信し、当該コネクションが確立されていない場合には、コネクションを要求するためのトリガを宛先の通信端末に送信するメッセージ送信部を含み、通信端末は、配信装置からトリガを受信すると、配信装置とのコネクションを確立し、当該コネクションを通して自端末宛のメッセージを配信装置から取得し、メッセージ取得後当該コネクションを維持するメッセージ受信部を含むことを特徴とする。
【００２７】
本発明によるメッセージ配信方法は、メッセージ配信を行う配信装置が、通信端末宛のメッセージ送信要求を受け付けると、自装置と宛先の通信端末との間にコネクションが確立されている場合には、当該コネクションを通してプッシュ型でメッセージを送信し、当該コネクションが確立されていない場合には、コネクションを要求するためのトリガを宛先の通信端末に送信し、通信端末が、配信装置からトリガを受信すると、配信装置とのコネクションを確立し、当該コネクションを通して自端末宛のメッセージを配信装置から取得し、メッセージ取得後当該コネクションを維持することを特徴とする。
【発明の効果】
【００２８】
本発明によれば、ＩＰネットワークを利用したプッシュ型メッセージ配信において、プッシュサーバの資源消費と通信負荷とを低減することができる。
【図面の簡単な説明】
【００２９】
【図１】本発明によるメッセージ配信システムの第１の実施形態の構成を示すブロック図である。
【図２】接続状態記憶部に格納される情報の一例を示す説明図である。
【図３】メッセージ記憶部に格納される情報の一例を示す説明図である。
【図４】プッシュメッセージ送信部の動作を示すフローチャートである。
【図５】メッセージ取得要求処理部の動作を示すフローチャートである。
【図６】接続制御部の動作を示すフローチャートである。
【図７】移動通信端末のメッセージ受信部におけるプッシュメッセージ受信処理の動作を示すフローチャートである。
【図８】ロングポーリングとＨＴＴＰキープアライブとの組合せによるメッセージ取得の様子を示す説明図である。
【図９】本発明によるメッセージ配信システムの最小構成を示すブロック図である。
【図１０】本発明によるメッセージ配信システムの他の最小構成を示すブロック図である。
【図１１】サーバ起点のメッセージ送信およびクライアント起点のメッセージ取得によるメッセージ送受信の様子を示す説明図である。
【図１２】ＨＴＴＰを用いた周期ポーリング方式によるメッセージ送受信の様子を示す説明図である。
【図１３】ロングポーリングによるメッセージ送受信の様子を示す説明図である。
【図１４】サーバ起点のトリガ送信とクライアント起点のメッセージ取得とを組合せた方法によるメッセージ送受信の様子を示す説明図である。
【発明を実施するための形態】
【００３０】
実施形態１．
以下、本発明の第１の実施形態を図面を参照して説明する。
【００３１】
本実施形態では、プッシュサーバが、特定の移動通信端末宛のメッセージ送信要求を初めて受け付けた際に、当該移動通信端末にトリガを送信する。そして、トリガを受信した当該移動通信端末がプッシュサーバとのコネクションを確立する。コネクションが確立された後、プッシュサーバが、そのコネクションを通して当該移動通信端末へメッセージを送信する。プッシュサーバと当該移動通信端末とは、このコネクションを一定時間維持する。プッシュサーバは、コネクションが維持されている間に当該移動通信端末宛の後続のメッセージ送信要求を受け付けた際にはトリガを使用せず、確立済みのコネクションを用いてメッセージを送信する。一定時間、当該移動通信端末宛のメッセージ送信要求がない場合には、プッシュサーバはコネクションを切断し、コネクション維持のためのサーバ資源を解放する。
【００３２】
このように、本発明によるメッセージ配信システムでは、プッシュサーバは、一時的に有効なコネクションを通してメッセージを送信し、コネクションが存在しない場合に限って移動通信端末にトリガを送信して、移動通信端末からのコネクション確立を促す。このように動作することで、本発明によるメッセージ配信システムは、プッシュサーバの資源消費と通信負荷がともに小さい効率的なメッセージ配信を可能にする。
【００３３】
本実施形態では、メッセージそのものの送信に必要な通信方式を第一の通信方式と呼ぶ。また、トリガ送信に用いる通信方式を第二の通信方式と呼ぶ。
【００３４】
図１は、本発明によるメッセージ配信システムの第１の実施形態の構成を示すブロック図である。図１に示すように、本発明によるメッセージ配信システムは、プッシュサーバ１００と、移動通信端末２００−１〜２００−ｎとを備える。
【００３５】
プッシュサーバ１００には、少なくとも１台の移動通信端末が接続される。プッシュサーバ１００と移動通信端末２００−１〜２００−ｎとは、携帯電話網や無線ＬＡＮなどのパケット通信網４００を介して接続される。
【００３６】
また、プッシュサーバ１００には、少なくとも１台のアプリケーションサーバが接続される。プッシュサーバ１００とアプリケーションサーバ３００−１〜３００−ｎとは、インターネットなどの任意のネットワーク（図示せず）を介して接続される。
【００３７】
プッシュサーバ１００は、プログラム制御によって動作するサーバ装置であって、アプリケーションサーバ３００−１〜３００−ｎからの要求に基づいて、移動通信端末２００−１〜２００−ｎにプッシュ型のメッセージ配信を行う。
【００３８】
プッシュサーバ１００は、プッシュメッセージ送信部１１０と、メッセージ取得要求処理部１２０と、接続制御部１３０と、接続状態記憶部１４０と、メッセージ記憶部１５０とを含む。
【００３９】
プッシュメッセージ送信部１１０は、アプリケーションサーバ３００−１〜３００−ｎからプッシュメッセージ送信要求（以下、単にメッセージ送信要求ともいう。）を受信すると、宛先の移動通信端末（以下、宛先端末という。）にメッセージを送信する。宛先端末とのコネクションが存在しない場合には、プッシュメッセージ送信部１１０は、宛先端末にトリガのみを送信しメッセージの送信を行わない。この場合、送信されなかったメッセージは、各移動通信端末からのメッセージ取得要求への応答として送信される。
【００４０】
メッセージ取得要求処理部１２０は、各移動通信端末からメッセージ取得要求を受信し、メッセージ取得要求への応答として当該要求元の移動通信端末にメッセージを送信する。
【００４１】
接続制御部１３０は、各移動通信端末とプッシュサーバ１００との間に確立したコネクションについて、一定時間ごとに有効期限が過ぎているかどうかを監視する。接続制御部１３０は、有効期限が過ぎているコネクションを検出したときは、そのコネクションを切断する。
【００４２】
接続状態記憶部１４０は、各移動通信端末の接続状態に関する情報を記憶する。図２は、接続状態記憶部１４０に格納される情報の一例を示す説明図である。
【００４３】
接続状態記憶部１４０は、図２に示すように、移動通信端末２００−１〜２００−ｎを一意に識別する端末ＩＤと、端末ＩＤに対応する属性（接続状態、コネクションＩＤ、有効期限）を含むレコードを保持する。つまり、接続状態記憶部１４０は、端末ＩＤをキーとし、「接続状態」、「コネクションＩＤ」、「有効期限」の各属性を保持する。
【００４４】
「接続状態」は、端末ＩＤで識別される移動通信端末とプッシュサーバ１００との間にコネクションが存在しているか否かを示す。レコード登録時には「接続状態」として“接続中”が設定される。具体的には、接続制御部１３０が、ある移動通信端末を起点として確立されたコネクションを検出すると、当該移動通信端末に対応する端末ＩＤを含むレコードを、接続状態記憶部１４０が保持するレコードの中から検索する。接続制御部１３０は、当該端末ＩＤを含むレコードが存在する場合は、そのレコードの「接続状態」を“非接続中”から“接続中”に変更する。当該端末ＩＤに対応するレコードが存在しない場合は、接続制御部１３０は当該移動通信端末に対応するレコードを接続状態記憶部１４０に追加する。また、接続制御部１３０は、当該レコードの「接続状態」を“接続中”に設定する。
【００４５】
「接続状態」が“接続中”である場合、「コネクションＩＤ」として、コネクションを一意に識別するＩＤ、例えばソケットを識別するファイルデスクリプタが設定される。「有効期限」として、コネクションの有効期限を示す時刻（以下、タイムアウト値ともいう。）が設定される。本実施形態では、コネクションを検出した時刻から所定の時間、例えば１０分だけ経過した時刻が「有効期限」として設定される。
【００４６】
端末ＩＤの一例は、電話番号やＩＭＥＩ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｍｏｂｉｌｅ  Ｅｑｕｉｐｍｅｎｔ  Ｉｄｅｎｔｉｔｙ）のように移動通信端末を永続的に識別するＩＤである。悪意を持ったメッセージ送信を防ぐ目的で、移動通信端末に一時的な端末ＩＤが割り当てられてもよい。また、端末ＩＤは、移動通信端末上で動作するアプリケーションを一意に識別するＩＤであってもよい。
【００４７】
メッセージ記憶部１５０は、アプリケーションサーバから受信したプッシュメッセージ送信要求に関する情報を記憶する。図３は、メッセージ記憶部１５０に格納される情報の一例を示す説明図である。
【００４８】
メッセージ記憶部１５０は、図３に示すように、メッセージを一意に識別するメッセージＩＤと、メッセージＩＤに対応する属性（日時、送信状態、送信者ＩＤ、宛先端末ＩＤ、メッセージ本文）を含むレコードを保持する。つまり、メッセージ記憶部１５０は、メッセージＩＤをキーとし、「日時」、「送信状態」、「送信者ＩＤ」、「宛先端末ＩＤ」、「メッセージ本文」の各属性を保持する。
【００４９】
「日時」は、メッセージＩＤで識別されるメッセージについてのプッシュメッセージ送信要求を受信した日時を示す。「送信状態」は、そのメッセージの宛先端末への送信が完了したか否かを示す。具体的には、送信が完了した場合は「送信状態」として“送信済”が設定される。送信が完了していない場合は「送信状態」として“未送信”が設定される。「送信者ＩＤ」は、プッシュメッセージ送信要求の送信者を識別するＩＤである。「宛先端末ＩＤ」は、メッセージの宛先となる移動通信端末、つまり宛先端末の端末ＩＤである。「メッセージ本文」は、宛先端末に送信すべきメッセージの本文である。
【００５０】
なお、プッシュメッセージ送信部１１０、メッセージ取得要求処理部１２０および接続制御部１３０は、例えば、プログラムに従って動作するコンピュータによって実現される。この場合、ＣＰＵがプログラムを読み込み、そのプログラムに従って、プッシュメッセージ送信部１１０、メッセージ取得要求処理部１２０および接続制御部１３０として動作する。また、プッシュメッセージ送信部１１０、メッセージ取得要求処理部１２０および接続制御部１３０が別々のハードウェアで実現されていてもよい。
【００５１】
また、接続状態記憶部１４０およびメッセージ記憶部１５０は、例えば、プッシュサーバ１００が備えるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の記憶装置によって実現される。
【００５２】
移動通信端末２００−１〜２００−ｎは、パケット通信網４００を介してプッシュサーバ１００と通信可能な装置である。移動通信端末２００−１〜２００−ｎは、例えば、携帯電話、スマートフォン、通信モジュールを内蔵した車載情報端末である。移動通信端末２００−１〜２００−ｎは、それぞれメッセージ受信部を含む。
【００５３】
メッセージ受信部２１０−１〜２１０−ｎは、プッシュサーバ１００にメッセージ取得要求を送り、プッシュサーバ１００から自端末宛のメッセージを受信する。
【００５４】
なお、メッセージ受信部２１０−１〜２１０−ｎは、例えば、プログラムに従って動作するコンピュータによって実現される。この場合、ＣＰＵがプログラムを読み込み、そのプログラムに従って、メッセージ受信部２１０−１〜２１０−ｎとして動作する。
【００５５】
アプリケーションサーバ３００は、各移動通信端末にメッセージを送信するために、プッシュサーバ１００に対してプッシュメッセージ送信要求を送信する。
【００５６】
次に、本実施形態の動作を説明する。
【００５７】
まず、プッシュメッセージ送信部１１０の動作を説明する。図４は、プッシュメッセージ送信部１１０の動作を示すフローチャートである。
【００５８】
プッシュメッセージ送信部１１０は、受信したプッシュメッセージ送信要求に対して一意なメッセージＩＤを発行する。プッシュメッセージ送信部１１０は、メッセージＩＤの発行とともに、プッシュメッセージ送信要求に含まれる宛先端末ＩＤ、メッセージ本文、送信者ＩＤおよび日時を、メッセージ記憶部１５０に新規レコードとして保存する（ステップＳ４０１）。
【００５９】
ステップＳ４０１において、プッシュメッセージ送信部１１０は、新規レコードの「送信状態」として“未送信”を設定する。
【００６０】
プッシュメッセージ送信部１１０は、プッシュメッセージ送信要求に含まれる宛先端末ＩＤをキーとして接続状態記憶部１４０を検索し、宛先端末ＩＤに対応する移動通信端末（宛先端末）の接続状態を参照する（ステップＳ４０２）。このとき、プッシュメッセージ送信部１１０は、宛先端末とプッシュサーバ１００との間に確立済みのコネクションがあるか否かを確認する（ステップＳ４０３）。
【００６１】
確立済みのコネクションがない場合は（ステップＳ４０３のＮＯ）、プッシュメッセージ送信部１１０はステップＳ４０９の処理に移行する。
【００６２】
確立済みのコネクションがある場合は（ステップＳ４０３のＹＥＳ）、プッシュメッセージ送信部１１０は、宛先端末との間のコネクションを用いて、ステップＳ４０１でメッセージ記憶部１５０に保存された、プッシュメッセージ送信要求に含まれるメッセージを宛先端末に送信する（ステップＳ４０４）。
【００６３】
ステップＳ４０４において宛先端末へのメッセージ送信に成功した場合は（ステップＳ４０５のＹＥＳ）、ステップＳ４０１でメッセージ記憶部１５０に保存されたレコードの「送信状態」を“送信済”に変更する（ステップＳ４０６）。
【００６４】
プッシュメッセージ送信部１１０は、ステップＳ４０６の処理を実行後、コネクションの有効期限の延長処理を実行し（ステップＳ４０７）、メッセージ送信処理を終了する。ステップＳ４０７において、プッシュメッセージ送信部１１０は、接続状態記憶部１４０に格納された、宛先端末に該当するレコードの「有効期限」の値を現在時刻から所定の時間だけ経過した後の時刻に更新する。ここで、コネクションの有効期間を延長するのは、典型的に、１回のサービスの利用は複数回のメッセージの送受信を伴うという理由による。
【００６５】
ステップＳ４０４において移動通信端末へのメッセージ送信に失敗した場合は（ステップＳ４０５のＮＯ）、プッシュメッセージ送信部１１０は、接続状態記憶部１４０に格納された、宛先端末に該当するレコードの「接続状態」を“非接続中”に更新する（ステップＳ４０８）。すなわち、プッシュメッセージ送信部１１０は、無効なコネクションについて、接続状態記憶部１４０の内容を実際のコネクションの状態に一致させる。ここで、メッセージ送信に失敗するケースの一例として、ＮＡＴ装置におけるアドレス変換表の有効期限切れのために、コネクションが無効になりメッセージ送信に失敗するケースがある。
【００６６】
プッシュメッセージ送信部１１０は、ステップＳ４０８の処理を実行後、宛先端末に対して、第二の通信方式、すなわちサーバ起点のメッセージ送信方式を用いて、コネクションの確立を要求するためのトリガを送信し（ステップＳ４０９）、メッセージ送信処理を終了する。
【００６７】
なお、ステップＳ４０１において、プッシュメッセージ送信部１１０は、確立済みコネクションを通したメッセージ送信に成功するか否かに関わらずメッセージ記憶部１５０に新規レコードを格納しているが、ステップＳ４０９においてトリガ送信を実行した場合にのみ新規レコードを格納するようにしてもよい。
【００６８】
次に、メッセージ取得要求処理部１２０の動作を説明する。図５は、メッセージ取得要求処理部１２０の動作を示すフローチャートである。
【００６９】
移動通信端末２００−１〜２００−ｎは、プッシュサーバ１００からトリガを受信すると、プッシュサーバ１００とのコネクションを確立する。移動通信端末２００−１〜２００−ｎは、コネクションを確立した後、プッシュサーバ１００に対してメッセージ取得要求を送信する。メッセージ取得要求は、パラメータとして移動通信端末を識別する端末ＩＤを含む。
【００７０】
メッセージ取得要求処理部１２０は、メッセージ取得要求を受信すると、メッセージ記憶部１５０から、送信対象のメッセージを検索する（ステップＳ５０１）。送信対象となるメッセージは、「宛先端末ＩＤ」の値が、メッセージ取得要求に含まれる端末ＩＤと一致し、かつ「送信状態」が“未送信”であるメッセージである。
【００７１】
ステップＳ５０１における検索の結果、送信対象のメッセージが存在する場合は（ステップＳ５０２のＹＥＳ）、当該メッセージの内容を、メッセージ取得要求への応答として、要求元の移動通信端末に送信する（ステップＳ５０３）。メッセージ取得要求処理部１２０は、この応答を、要求元の移動通信端末とプッシュサーバ１００との間で確立済みのコネクションを通して送信する。
【００７２】
ステップＳ５０３において移動通信端末へのメッセージ送信に失敗した場合は（ステップＳ５０４のＮＯ）、メッセージ取得要求処理部１２０は、メッセージ取得要求に対する処理を終了する。メッセージの送信に失敗する原因の一例は、要求元の移動通信端末が携帯電話網の圏外となって通信ができない状況である。
【００７３】
ステップＳ５０３において移動通信端末へのメッセージ送信に成功した場合は（ステップＳ５０４のＹＥＳ）、メッセージ取得要求処理部１２０は、メッセージ記憶部１５０に格納された、ステップＳ５０３で送信したメッセージに対応するレコードの「送信状態」を“送信済”に変更する（ステップＳ５０５）。
【００７４】
メッセージ取得要求処理部１２０は、ステップＳ５０５の処理を実行後、コネクションの有効期限の延長処理を実行し（ステップＳ５０６）、メッセージ取得要求に対する処理を終了する。ステップＳ５０６において、メッセージ取得要求処理部１２０は、接続状態記憶部１４０に格納された、メッセージ取得要求の要求元の端末に該当するレコードの「有効期限」の値を現在時刻から所定の時間だけ経過した後の時刻に更新する。
【００７５】
ステップＳ５０１における検索の結果、送信対象のメッセージが存在しない場合は（ステップＳ５０２のＮＯ）、メッセージ取得要求処理部１２０は、メッセージ取得要求の要求元の移動通信端末に対して、エラーを示す応答を送信し（ステップＳ５０７）、メッセージ取得要求に対する処理を終了する。
【００７６】
次に、接続制御部１３０の動作を説明する。図６は、接続制御部１３０の動作を示すフローチャートである。
【００７７】
接続制御部１３０は、図６に示す処理を、タイマ割り込みなどの手段を用いて一定時間ごとに実行する。なお、ここでは、接続状態記憶部１４０に格納された１つのレコードについての処理を説明するが、接続制御部１３０は、接続状態記憶部１４０に格納されたすべてのレコードについて同様の処理を行う。
【００７８】
接続制御部１３０は、接続状態記憶部１４０に格納された１つのレコードについて、「接続状態」および「有効期限」を参照する（ステップＳ６０１）。
【００７９】
接続制御部１３０は、当該レコードの「接続状態」が“接続中”であり、かつ現在時刻が有効期限を過ぎている場合は（ステップＳ６０２のＹＥＳ）、ステップＳ６０３の処理に移行する。それ以外の場合は（ステップＳ６０２のＮＯ）、接続制御処理を終了する。
【００８０】
ステップＳ６０３において、接続制御部１３０は、プッシュサーバ１００と、当該レコードに対応する移動通信端末との間のコネクションを切断する。
【００８１】
接続制御部１３０は、接続状態記憶部１４０において、当該レコードの「接続状態」を“非接続中”に変更し（ステップＳ６０４）、接続制御処理を終了する。
【００８２】
ここで、プッシュサーバ１００と移動通信端末２００−１〜２００−ｎの間のコネクションがＴＣＰコネクションである場合、ステップＳ６０３におけるコネクション切断は、プッシュサーバ１００からのＦＩＮパケット送信から始まるＴＣＰコネクション切断処理に相当する。また、コネクションがロングポーリングである場合、ステップＳ６０３におけるコネクション切断はプッシュサーバ１００からのＨＴＴＰレスポンス送信に相当する。
【００８３】
次に、各移動通信端末のメッセージ受信部の動作を説明する。図７は、移動通信端末２００−１〜２００−ｎのメッセージ受信部２１０−１〜２１０−ｎにおけるプッシュメッセージ受信処理の動作を示すフローチャートである。
【００８４】
各移動通信端末のメッセージ受信部は、プッシュサーバ１００からトリガを受け取るか、確立済みのコネクションを通してプッシュサーバ１００からメッセージを受け取ると、以下に示すプッシュメッセージ受信処理を開始する。
【００８５】
メッセージ受信部は、プッシュサーバ１００との間にコネクションが確立済みであるかどうかを調べる（ステップＳ７０１）。
【００８６】
コネクションが未確立である場合は（ステップＳ７０１のＮＯ）、メッセージ受信部はプッシュサーバ１００とのコネクションを確立する（ステップＳ７０２）。コネクションが確立済みである場合は（ステップＳ７０１のＹＥＳ）、メッセージ受信部はステップＳ７０３の処理に移行する。ここで、前者はトリガを受け取った場合、後者は確立済みコネクションを通してメッセージを受け取った場合にそれぞれ相当する。
【００８７】
メッセージ受信部は、プッシュサーバ１００との間で確立済みのコネクションを通してメッセージ取得要求を送り、自端末宛のメッセージを受信する（ステップＳ７０３）。
【００８８】
メッセージ受信部は、プッシュサーバ１００との間で確立済みのコネクションを維持する（ステップＳ７０４）。
【００８９】
ここで、コネクションの具体例を用いて、ステップＳ７０２〜Ｓ７０４の処理を説明する。
【００９０】
例えば、コネクションをＴＣＰコネクションとし、コネクションを通したデータ送受信をＴＣＰコネクションにおけるパケット送受信として実現する場合は、ステップＳ７０２でのコネクション確立はＴＣＰの３ウェイ・ハンドシェイクに相当する。ステップＳ７０３でメッセージ受信部が取得するメッセージは、メッセージ取得要求パケットに対する応答として、プッシュサーバ１００から送信されるＴＣＰパケット列に相当する。ステップＳ７０４ではメッセージ受信部は何もしない。
【００９１】
また、例えば、コネクションをロングポーリングとして実現する場合は、ステップＳ７０２でのコネクション確立は、メッセージ受信部がプッシュサーバ１００に送信するＨＴＴＰリクエストに相当する。ステップＳ７０３でメッセージ受信部が取得するメッセージは、当該ＨＴＴＰリクエストに対するＨＴＴＰレスポンスに相当する。ステップＳ７０４の処理は、ステップＳ７０３でのＨＴＴＰレスポンス受信後に、メッセージ受信部が再度ＨＴＴＰリクエストを送信する処理に相当する。なお、ステップＳ７０３の処理完了直後は、ＨＴＴＰレイヤではコネクションが途切れているが、ＨＴＴＰキープアライブとの組合せで、ＴＣＰコネクションを維持することができる。
【００９２】
図８は、ロングポーリングとＨＴＴＰキープアライブとの組合せによるメッセージ取得の様子を示す説明図である。ロングポーリングとＨＴＴＰキープアライブとを組合せた場合、図８に示すように、最初のＨＴＴＰリクエストの際に確立したＴＣＰコネクションが維持され、２回目以降のＨＴＴＰリクエストにおいても使用される。
【００９３】
以上に説明したように、本実施形態では、プッシュサーバが移動通信端末の１つに宛てたメッセージを送信する際に、図１４に示された方法と異なり、その移動通信端末とプッシュサーバとの間でコネクションを確立するだけでなく、一旦確立したコネクションを一定時間維持する。また、一旦確立したコネクションを一定時間維持するとともに、コネクションの有効期間内はトリガを用いずにコネクションのみを用いてメッセージを送信する。それにより、同じ移動通信端末宛に後続のメッセージが到着した際に、トリガ送信やコネクション確立のための通信が不要になる。従って、例えば、同一の移動通信端末に宛てたメッセージを一定期間内に複数回送る場合に、トリガの送受信のための通信トラフィックを削減できる。このように、本実施形態では、ＩＰネットワークを利用したプッシュ型メッセージ配信において、移動通信端末とプッシュサーバとの間のコネクション維持に要するハードウェア資源を抑制しながら、多数のメッセージを効率よく配信することができる。
【００９４】
また、本実施形態では、プッシュサーバと移動通信端末との間のコネクションは一時的なものであって、一定時間、典型的には数分から数十分程度、その移動通信端末宛のメッセージが到着しない場合、プッシュサーバは、タイムアウトが発生したと判断しコネクションを切断する。タイムアウト発生前にその移動通信端末宛のメッセージが到着した場合は、プッシュサーバは、コネクションの有効期間を延長する。一定時間内に同一端末に複数回メッセージが到着すると、近いうちにさらにメッセージが到着する可能性が高いからである。コネクションの有効期間の延長により、一定時間を超えて同一端末から複数回のメッセージが送信される場合にも、トリガの送受信のための通信トラフィックを削減できる。それに対して、特許文献２に記載されたシステムは、ユーザ端末と一旦確立したコネクションをどのようなタイミングで切断するかを考慮していない。従って、特許文献２に記載されたシステムでは、一定時間を超えて同一端末から複数回のメッセージが送信される場合に、トリガの送受信のための通信トラフィックを削減することが困難である。
【００９５】
なお、本実施形態では、メッセージ配信システムにプッシュサーバが１台のみ含まれる場合について説明したが、プッシュサーバはメッセージ配信システムにいくつ含まれていてもよい。例えば、負荷分散のために複数台のプッシュサーバを並列に配置してもよい。
【００９６】
本発明は、携帯電話、スマートフォン、パーソナルコンピュータ、車載情報端末、ＴＶ、センサなど、通信機能を備えた通信機器に対してプッシュ型のメッセージ配信を行うためのサーバ装置に利用可能である。
【００９７】
図９は、本発明によるメッセージ配信システムの最小構成を示すブロック図である。図１０は、本発明によるメッセージ配信システムの他の最小構成を示すブロック図である。
【００９８】
図９に示すように、メッセージ配信システムは、メッセージ配信を行う配信装置１０（図１に示すプッシュサーバ１００に相当。）と、通信端末２０−１〜２０−ｎ（図１に示す移動通信端末２００−１〜２００−ｎに相当。）とを備え、配信装置１０は、アプリケーションサーバ３０−１〜３０−ｎ（図１に示すアプリケーションサーバ３００−１〜３００−ｎ）から通信端末宛のメッセージ送信要求を受け付けると、自装置と宛先の通信端末との間にコネクションが確立されている場合には、当該コネクションを通して、プッシュ型でメッセージを送信し、当該コネクションが確立されていない場合には、コネクションを要求するためのトリガを宛先の通信端末に送信するメッセージ送信部１１（図１に示すプッシュサーバ１００におけるプッシュメッセージ送信部１１０に相当。）を含み、通信端末２０−１〜２０−ｎは、配信装置１０からトリガを受信すると、配信装置１０とのコネクションを確立し、当該コネクションを通して自端末宛のメッセージを配信装置１０から取得し、メッセージ取得後当該コネクションを維持するメッセージ受信部２１−１〜２１−ｎ（図１に示す移動通信端末２００−１〜２００−ｎにおけるメッセージ受信部２１０−１〜２１０−ｎに相当。）を含む。
【００９９】
そのような構成によれば、同じ移動通信端末宛に後続のメッセージが到着した際に、トリガ送信やコネクション確立のための通信が不要になる。従って、移動通信端末とプッシュサーバの間のコネクション維持に要するハードウェア資源を抑制しながら、多数のメッセージを効率よく配信することができる。
【０１００】
図１０に示すように、上記の実施形態には、以下のようなメッセージ配信システムも開示されている。つまり、図９に示すメッセージ配信システムは、さらに以下の（１）〜（４）に示すような構成を含んでいてもよい。
【０１０１】
（１）配信装置１０が、各通信端末との間に確立したコネクションの有効期限を示すタイムアウト値を保持する接続状態記憶部１３（図１に示すプッシュサーバ１００における接続状態記憶部１４０に相当。）と、接続状態記憶部１３が保持するタイムアウト値を参照し、タイムアウト値が示す時刻を過ぎたコネクションを切断する接続制御部１２（図１に示すプッシュサーバ１００における接続制御部１３０に相当。）とを備えるメッセージ配信システム。
【０１０２】
そのような構成によれば、移動通信端末とプッシュサーバとの間のコネクション維持に要するハードウェア資源をより抑制することができる。
【０１０３】
（２）メッセージ送信部１１が、メッセージ送信要求を受け付けた際に、宛先の通知端末との間にコネクションが確立されている場合には、接続状態記憶部１３が保持する当該コネクションに対応するタイムアウト値を更新し延長するメッセージ配信システム。
【０１０４】
そのような構成によれば、コネクションのタイムアウト値の延長により、一定時間を超えて同一端末から複数回のメッセージが送信される場合にも、トリガの送受信のための通信トラフィックを削減できる。
【０１０５】
（３）メッセージ送信部１１が、宛先の通信端末との間に既に確立されたコネクションを通したメッセージの送信に失敗した場合に、当該宛先の通信端末にトリガを送信するメッセージ配信システム。
【０１０６】
そのような構成によれば、例えば、ＮＡＴ装置におけるアドレス変換表の有効期限切れのために、コネクションが無効になりメッセージ送信ができない場合でも、メッセージを宛先の移動通信端末に確実に到達させることができる。
【０１０７】
（４）メッセージ送信部１１が、メッセージ送信要求を受け付けた際に、接続状態記憶部１３が保持する、各通信端末との間のコネクションの有無を示す情報を参照し、宛先の通信端末との間にコネクションが確立されているか否かを判定するメッセージ配信システム。
【０１０８】
そのような構成によれば、複数の移動通信端末のコネクションの有無を正確に管理することができる。従って、プッシュサーバに複数の移動通信端末が接続されている場合であっても、確実に、各移動通信端末とプッシュサーバの間のコネクションの維持に要するハードウェア資源を抑制しながら、多数のメッセージを効率よく配信することができる。
【符号の説明】
【０１０９】
１０  配信装置
１１  メッセージ送信部
１２、１３０  接続制御部
１３、１４０  接続状態記憶部
１５０  メッセージ記憶部
２０−１〜２０−ｎ  通信端末
２１−１〜２１−ｎ、２１０−１〜２１０−ｎ  メッセージ受信部
３０−１〜３０−ｎ、３００−１〜３００−ｎ  アプリケーションサーバ
１００  プッシュサーバ
１１０  プッシュメッセージ送信部
１２０  メッセージ取得要求処理部
２００−１〜２００−ｎ  移動通信端末
【図１】
2014146876.tif 000003
【図２】
2014146876.tif 000004
【図３】
2014146876.tif 000005
【図４】
2014146876.tif 000006
【図５】
2014146876.tif 000007
【図６】
2014146876.tif 000008
【図７】
2014146876.tif 000009
【図８】
2014146876.tif 000010
【図９】
2014146876.tif 000011
【図１０】
2014146876.tif 000012
【図１１】
2014146876.tif 000013
【図１２】
2014146876.tif 000014
【図１３】
2014146876.tif 000015
【図１４】
2014146876.tif 000016