JP7009163B2 - 通信装置、通信方法、及びプログラム - Google Patents

通信装置、通信方法、及びプログラム Download PDF

Info

Publication number
JP7009163B2
JP7009163B2 JP2017211157A JP2017211157A JP7009163B2 JP 7009163 B2 JP7009163 B2 JP 7009163B2 JP 2017211157 A JP2017211157 A JP 2017211157A JP 2017211157 A JP2017211157 A JP 2017211157A JP 7009163 B2 JP7009163 B2 JP 7009163B2
Authority
JP
Japan
Prior art keywords
information
client
client device
push
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017211157A
Other languages
English (en)
Other versions
JP2019082954A (ja
Inventor
和矢 谷口
健介 安間
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2017211157A priority Critical patent/JP7009163B2/ja
Priority to US16/158,879 priority patent/US11196831B2/en
Publication of JP2019082954A publication Critical patent/JP2019082954A/ja
Application granted granted Critical
Publication of JP7009163B2 publication Critical patent/JP7009163B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、サーバ装置から通信装置を介してクライアント装置へデータを送信する技術に関する。
近年、サーバ装置からクライアント装置へプッシュ型のデータ送信を行うプッシュサービスが考えられている。プッシュサービスにおいては、クライアント装置からサーバ装置へのリクエストのタイミングによらずに、サーバ装置からクライアント装置へイベントの発生などを通知するためのデータが送信される。IETF(Internet Engineering Task Force)においては、Web技術を用いたプッシュサービスの実現の方式としてWebPushプロトコルが提案されている。WebPushプロトコルに従う通信においては、サーバ装置(AS:ApplicationServer)から送信されたデータを通信装置(PS:PushService)がクライアント装置(UA:UserAgent)へ転送する。これにより、ASからUAへのプッシュ型のデータ送信が実現される。特許文献1には、サーバ装置が複数のクライアント装置に接続され、一つのクライアント装置に対して他の複数のクライアント装置の状態を示す情報をプッシュすることが開示されている。
特開2012-83924号公報
従来技術では、サーバ装置から通信装置を介して複数のクライアント装置へデータを送信する場合に、通信装置へのデータ送信に係るサーバ装置の処理負荷が大きくなってしまうという課題がある。例えば、WebPushプロトコルに従う通信において、ASからPSを介して複数のUAに同一のデータを送信する場合に、ASが複数のUAそれぞれを宛先とする複数回のデータ送信をPSに対して行うと、ASの処理負荷が大きくなる。
本発明は上記課題に鑑み、サーバ装置から通信装置を介して複数のクライアント装置へデータを送信する場合における、通信装置へのデータ送信に係るサーバ装置の処理負荷の増大を抑制するための技術を提供することを目的とする。
上記の課題を解決するため、本発明に係る通信装置は、例えば以下の構成を有する。すなわち、サーバ装置から受信したデータをクライアント装置へ転送する通信装置であって、前記通信装置とは別の装置からの情報要求に応じて、前記別の装置に対し第1情報および第2情報を発行する発行手段と、前記別の装置から前記第1情報を取得したクライアント装置から、前記第1情報とともに転送要求を受信する第1受信手段と、前記別の装置から前記第2情報を取得したサーバ装置から、前記第2情報とともに前記転送要求の送信元であるクライアント装置へ転送すべきデータを前記サーバ装置から受信する第2受信手段と、前記第1受信手段が前記転送要求を複数のクライアント装置から受信した場合、前記第2受信手段により受信されたデータを、前記第2情報に関連する前記第1情報とともに転送要求を送信した前記複数のクライアント装置へ転送する転送手段とを有し、前記別の装置とは、前記第2情報に関連する前記第1情報を送信した前記複数のクライアント装置の1つであることを特徴とする。
本発明によれば、サーバ装置から通信装置を介して複数のクライアント装置へデータを送信する場合における、通信装置へのデータ送信に係るサーバ装置の処理負荷の増大を抑制することができる。
通信システム100の構成例を示す図である。 中継装置101のハードウェア構成例を示す図である。 通信システム100の動作シーケンスの例を示す図である。 中継装置101による識別子の生成に関する動作について説明するためのフローチャートである。 中継装置101による転送要求の受信に関する動作について説明するためのフローチャートである。 中継装置101によるプッシュメッセージの送信に関する動作について説明するためのフローチャートである。 クライアント装置102による識別子の受信と送信に関する動作について説明するためのフローチャートである。 クライアント装置103による識別子の取得に関する動作について説明するためのフローチャートである。 クライアント装置102によるプッシュメッセージの受信に関する動作について説明するためのフローチャートである。 サーバ装置104によるメッセージの送信に関する動作について説明するためのフローチャートである。 中継装置101により管理されるリストの例を示す図である。 通信システム100の動作シーケンスの例を示す図である。
〔実施形態1〕
[システム構成]
以下、本発明の実施形態について、図面を参照して説明する。図1は、本実施形態に係る通信システム100の構成を示す図である。本実施形態の通信システム100は、中継装置101、クライアント装置102、クライアント装置103、及びサーバ装置104を有する。クライアント装置102及びクライアント装置103は中継装置101を介してサーバ装置104と有線または無線で接続され、相互に通信を行って、例えば静止画や動画等のコンテンツデータやイベント通知コマンドなどを送受信する。なお、図1に示す通信システム100内には2台のクライアント装置が存在するが、中継装置101に接続されるクライアント装置の数はこれに限らず、3台以上であってもよい。また、中継装置101に接続されるサーバ装置104も、2台以上であってもよい。
本実施形態において、クライアント装置102とクライアント装置103はHTTP/2(Hypertext Transfer Protocol version 2)において規定されるクライアントとして動作する。一方、中継装置101はHTTP/2において規定されるサーバとして動作する。即ち、クライアント装置102及びクライアント装置103は中継装置101にHTTPリクエストを送信し、中継装置101は受信したHTTPリクエストに応じてクライアント装置102及びクライアント装置103にHTTPレスポンスを送信する。
サーバ装置104は、クライアント装置102及びクライアント装置103に対して、中継装置101を介してデータを送信することによりプッシュサービスを提供する。プッシュサービスの実現のために、中継装置101からクライアント装置102及びクライアント装置103へのデータの転送には、例えばHTTP/2の機能としてのサーバープッシュなどプッシュ型のデータ送信方法が用いられる。なお、サーバ装置104は中継装置101との通信においては、HTTP/1.1(Hypertext Transfer Protocol version 1.1)において規定されるクライアントとして動作する。そして中継装置101は、サーバ装置104との通信においてHTTP/1.1において規定されるサーバとして動作する。具体的には、サーバ装置104は中継装置101にPOSTメソッドなどのリクエストを送信し、プッシュによる送信の対象となるデータを中継装置101にアップロードする。
中継装置101は具体的には、PC、ネットワークスイッチ、及びルータなどの通信装置である。クライアント装置102及びクライアント装置103は具体的には、デジタルカメラ、ネットワークカメラ、プリンタ、複合機、テレビ、プロジェクタ、携帯電話、スマートフォン、及びPCなどのクライアント装置である。また、サーバ装置104の具体例も、クライアント装置102及びクライアント装置103と同様である。ただし、通信システム100内の各装置の形態はこれらに限定されない。
クライアント装置102、クライアント装置103、及びサーバ装置104と中継装置101とは、例えばLAN(Local Area Network)やWAN(Wide Area Network)、又はそれらの組み合わせにより接続される。LANとしては、Ethernet(登録商標)に則った有線LANや、IEEE(Institute of Electrical and Electronics Engineers)802.11シリーズに則った無線LANなどが用いられる。WANとしては、例えばインターネットなどが用いられる。また、Bluetooth(登録商標)やZigbee(登録商標)など他の通信方式に基づいて接続されてもよい。
クライアント装置102とクライアント装置103との間、及びクライアント装置102とサーバ装置104との間でもデータのやり取りが行われる。本実施形態ではこのデータのやり取りがLANやWANを介した通信により行われる場合を中心に説明するが、データのやり取りの方法はこれに限らない。例えば、一方の装置に表示させた画像やQRコード(登録商標)を他方の装置により読み取ることでデータをやり取りしてもよいし、一方の装置に表示された情報をユーザが他方の装置に入力してもよい。また、クライアント装置102やサーバ装置104などが不図示の情報管理装置に対するデータの登録、削除、及び更新などを行うことにより、情報管理装置を介したデータのやり取りが行われてもよい。情報管理装置は、例えば、クラウド上やサーバ上で管理されるソフトウェアであってもよい。
本実施形態において、中継装置101はWebPushプロトコルにおいて規定されるPS(PushService)の機能を持つ。また、クライアント装置102とクライアント装置103はWebPushプロトコルにおいて規定されるUA(UserAgent)の機能を持つ。そして、サーバ装置104はWebPushプロトコルにおいて規定されるAS(ApplicationService)の機能を持つ。通信システム100の基本的な動作としては、以下のようになる。すなわち、クライアント装置102及びクライアント装置103が中継装置101にデータの転送要求を行い、サーバ装置104が中継装置101へプッシュによる送信の対象となるデータを送信する。そして中継装置101が、サーバ装置104からのデータの受信に応じたタイミングで、転送要求を行った中継装置へ当該データを転送する。各装置の詳細な動作については後述する。
通信システム100の具体的な例としては、以下のようなものがある。クライアント装置102はスマートフォンであり、サーバ装置104はネットワークカメラである。クライアント装置102は中継装置101に転送要求を行い、サーバ装置104からの撮影画像の送信を待ち受ける。サーバ装置104は、カメラにより監視エリアを撮影し、監視エリアにおける異常を検知した場合に撮影画像を中継装置101に送信する。そして中継装置101は、サーバ装置104から送信された撮影画像をクライアント装置102に転送する。これにより、クライアント装置102のユーザは、監視エリアにおいて検知された異常を知り、監視エリアの撮影画像を確認することができる。
ここで、クライアント装置102とクライアント装置103の両方が、サーバ装置104からの同一データの送信を待ち受ける場合を考える。この場合に、サーバ装置104がまずクライアント装置102を宛先とするデータを中継装置101に送信し、その後にクライアント装置103を宛先とするデータを中継装置101に送信すると、サーバ装置104は同一データを2回送信することになる。このような方法を用いる場合、宛先となるクライアント装置の数が多くなるほどサーバ装置104からのデータ送信の回数が多くなり、サーバ装置104及び中継装置101の処理負荷や、ネットワークの負荷が大きくなる。そこで、本実施形態に係る通信システム100においては、複数のクライアント装置による転送要求において同一の識別情報を共用することで、サーバ装置104から中継装置101へのデータ送信の回数を削減する。
[装置構成]
図2は、中継装置101のハードウェア構成を示すブロック図である。なお、クライアント装置102、クライアント装置103、及びサーバ装置104も、中継装置101と同様の構成である。中継装置101は、CPU201、ROM202、RAM203、補助記憶装置204、表示部205、操作部206、通信部207、及びバス208を有する。
CPU201は、ROM202やRAM203に格納されているコンピュータプログラムやデータを用いて中継装置101の全体を制御する。ROM202は、変更を必要としないプログラムやパラメータを格納する。RAM203は、補助記憶装置204から供給されるプログラムやデータ、及び通信部207を介して外部から供給されるデータなどを一時記憶する。補助記憶装置204は、例えばハードディスクドライブ等で構成され、静止画や動画などのコンテンツデータを記憶する。
表示部205は、例えば液晶ディスプレイ等で構成され、ユーザが中継装置101を操作するためのGUI(Graphical User Interface)などを表示する。操作部206は、例えばキーボードやマウス、タッチパネル等で構成され、ユーザによる操作を受けて各種の指示をCPU201に入力する。通信部207は、クライアント装置102やクライアント装置103、サーバ装置104などの外部の装置と通信を行う。中継装置101が外部の装置と有線で接続される場合には、例えばLANケーブル等が通信部207に接続される。また、中継装置101が外部の装置と無線通信する機能を有する場合、通信部207はアンテナ等を備える。バス208は、中継装置101の各部を繋いで情報を伝達する。
なお、本実施形態ではCPU201がプログラムを実行することで通信部207を介した中継装置101と外部の装置との通信を制御するが、中継装置101と外部の装置との通信の少なくとも一部を通信部207がハードウェア処理により制御してもよい。また、本実施形態では表示部205と操作部206は中継装置101の内部に存在するが、表示部205及び操作部206の少なくとも一方が中継装置101の外部に別の装置として存在していてもよい。この場合、CPU201が、表示部205を制御する表示制御部、及び操作部206を制御する操作制御部として動作する。
[通信シーケンス]
以下、本実施形態における通信システム100内における通信のシーケンスについて、詳細に説明する。図3は、サーバ装置104が中継装置101を介してクライアント装置102及びクライアント装置103にデータをプッシュにより送信する際のシーケンスである。図3に示すシーケンスは、クライアント装置102、クライアント装置103、及びサーバ装置104のそれぞれと中継装置101との間の接続が確立されたタイミングで開始される。ただし、図3の処理の開始タイミングは上記タイミングに限定されない。図3に示す各通信処理は、通信システム100内の各装置のCPU201が通信部207などを制御することで実行される。
M1301において、クライアント装置102は中継装置101にサブスクライブ(識別子の情報要求)を行う。中継装置101はクライアント装置102からのサブスクライブを受け付け、WebPushプロトコルにおいて規定されるプッシュURIとそれに対応するプッシュメッセージサブスクリプションURI(以降、サブスクリプションURI)を生成する。生成されたプッシュURIとサブスクリプションURIは、図11(a)に示す識別子リストのような形式で中継装置101のRAM203に保存される。プッシュURI及びサブスクリプションURIは、中継装置101がサーバ装置104から送信されるデータの転送先を特定するために用いる識別子である。なお、これらの識別子はサブスクライブに応じて生成されるものに限らず、予め中継装置101が保持していた識別子の中からサブスクライブに応じて決定されたものであってもよい。本実施形態では識別子をURI(UniformResourceIdentifer)としているが、UUID(UniversallyUniqueIdetifer)のような他の形態の識別子であってもよい。また、本実施形態ではプッシュURIとサブスクリプションURIという2種類の情報が用いられる場合を中心に説明するが、これに限らず、1種類の情報を用いて転送対象のデータや転送先が特定されてもよい。すなわち、以下の説明におけるプッシュURIとサブスクリプションURIとが同一の情報であってもよい。
本実施形態では、サブスクライブがHTTP/1.1のPOSTメソッドを用いて行われるものとするが、例えばGETメソッドの様な別メソッドが用いられてもよいし、FTPやWebsocketなどの他通信規格に従う通信が用いられても良い。また本実施形態では、プッシュURIとサブスクリプションURIという2つの識別子が中継装置101により生成される場合について説明するが、これに限らない。例えば、プッシュURIのみが生成されてもよいし、プッシュURIとサブスクリプションURIに加えてWebpushプロトコルにおいて規定されるプッシュメッセージサブスクリプション・セットURIが生成されてもよい。
M1302において、中継装置101は、M1301におけるクライアント装置102からの要求に応じて、M1301で生成されたプッシュURIとサブスクリプションURIを含むレスポンスを送信する。クライアント装置102はレスポンスを受信し、受信したレスポンスに含まれるプッシュURIとサブスクリプションURIをRAM203などに保存する。本実施形態ではこのレスポンスにおけるステータスコードを201Createdとしているが、これに限らなくてもよい。
M1303において、クライアント装置102はクライアント装置103に、M1302で受信したプッシュURIとサブスクリプションURIを送信する。クライアント装置103はプッシュURIとサブスクリプションURIを受信し、プッシュURIとサブスクリプションURIをRAM203などに保存する。
M1304において、クライアント装置102はサーバ装置104にプッシュURIを送信する。サーバ装置104はプッシュURIを受信し、プッシュURIをRAM203などに保存する。なお、図3の例ではHTTP/1.1に従う通信を用いてクライアント装置102からサーバ装置104へのプッシュURIの受け渡しを行っているが、すでに説明した通り、データの受け渡しの方法はこれに限定されない。例えば、サーバ装置104はプッシュURIを他の通信プロトコルを用いて受信してもよいし、クライアント装置102の表示部205に表示された画像やQRコードを用いて受信してもよいし、情報管理装置を介して受信してもよい。また、ユーザがサーバ装置104の操作部206を操作してプッシュURIを入力してもよい。なお、M1303におけるデータの受け渡しについても同様である。
M1305において、クライアント装置102は中継装置101に、M1302で中継装置101から受信したサブスクリプションURIを含む転送要求を送信する。この転送要求の送信により、クライアント装置102は、中継装置101によるプッシュ型のデータ送信を要求する。中継装置101は転送要求を受信し、受信した転送要求に含まれるサブスクリプションURIがRAM203内の識別子リストに保存済みのサブスクリプションURIと合致することを確認する。そして中継装置101は、そのサブスクリプションURIに対応するプッシュURIと、転送要求の送信元であるクライアント装置102のデバイス情報とを、図11(b)に示すプッシュ配信リストのような形式でRAM203に保存する。
M1306において、クライアント装置103は中継装置101に、M1303でクライアント装置102から受信したサブスクリプションURIを含む転送要求を送信する。中継装置101はM1305の処理と同様に、転送要求を受信し、プッシュURIとデバイス情報をプッシュ配信リストに保存する。
すなわち、M1305及びM1306において中継装置101は、同一のサブスクリプションURIを含む2つの転送要求を、クライアント装置102とクライアント装置103の2つの装置から受信する。そして、中継装置101が保持するプッシュ配信リストにおいては、図11(b)に示すように、同一のプッシュURIに複数のデバイス情報が対応付けられる。
M1307において、サーバ装置104は中継装置101に、M1304でクライアント装置102から受信したプッシュURIを含む配信メッセージを送信する。中継装置101はサーバ装置104からプッシュURIを含む配信メッセージを受信し、受信した配信メッセージに含まれるプッシュURIがRAM203内の識別子リストに保存済みのプッシュURIと合致することを確認する。合致する場合の当該配信メッセージは、当該プッシュURIと対応するサブスクリプションURIを含む転送要求の送信元であるクライアント装置へ転送すべきデータである。M1308において、中継装置101はサーバ装置104に、プッシュのリクエストを受け付けたことを示す配信レスポンスを送信し、サーバ装置104は配信レスポンスを受信する。
M1309において、中継装置101は、RAM203に保存されているプッシュ配信リストから、M1307で受信した配信メッセージに含まれるプッシュURIに対応するデバイス情報を検索する。そして中継装置101は、該当したデバイス情報から特定されるクライアント装置102に、そのプッシュURIを含むプッシュ予約を送信する。プッシュ予約の送信により、後にメッセージがプッシュ通知により送信されることが送信先に通知される。クライアント装置102はプッシュ予約を受信し、中継装置101からプッシュメッセージを受信するまで待機する。
M1310において、中継装置101はクライアント装置102にプッシュメッセージを送信する。クライアント装置102はプッシュメッセージを受信する。このプッシュメッセージは、M1305における転送要求に応じて中継装置101からクライアント装置102へプッシュにより送信されるメッセージである。すなわち、クライアント装置102からのリクエストに依存しないタイミングで中継装置101からプッシュメッセージが送信される。ただし、M1310におけるプッシュ型のデータ送信の代わりに、中継装置101はクライアント装置102からのリクエストを待ってメッセージを送信してもよい。
ここで中継装置101から送信されるプッシュメッセージは、S1307においてサーバ装置104から送信された配信メッセージに応じた情報である。またこのプッシュメッセージは、配信メッセージに含まれるプッシュURIに対応するサブスクリプションURIを含むM1305における転送要求に応じて中継装置101により転送される情報でもある。なお、配信メッセージとプッシュメッセージは同一のデータを含んでいてもよいし、異なるデータを含んでいてもよい。M1311において、クライアント装置102は中継装置101に、プッシュメッセージを受信したことを示すプッシュレスポンスを送信する。中継装置101はプッシュレスポンスを受信する。
M1312において、中継装置101はM1309と同様に、M1307で受信した配信メッセージに含まれるプッシュURIに対応するデバイス情報から特定されるクライアント装置103に、そのプッシュURIを含むプッシュ予約を送信する。クライアント装置103はプッシュ予約を受信し、中継装置101からプッシュメッセージを受信するまで待機する。
M1313において、中継装置101はクライアント装置103にプッシュメッセージを送信し、クライアント装置103はプッシュメッセージを受信する。ここで送信されるプッシュメッセージは、S1307においてサーバ装置104から送信された配信メッセージに応じた情報である。なお、S1313において送信されるプッシュメッセージとM1310において送信されるプッシュメッセージは同一であってもよいし、送信先に応じて異なるデータを含んでいてもよい。M1314において、クライアント装置103は中継装置101にプッシュレスポンスを送信し、中継装置101はプッシュレスポンスを受信する。
以上で通信システム100における一連の通信が終了する。図3を用いて説明したシーケンスをまとめると、以下のようになる。中継装置101は、サーバ装置104から送信されるデータを転送するためのサブスクリプションURIと、そのサブスクリプションURIに対応するプッシュURIとを生成する(M1301)。クライアント装置102とクライアント装置103は、同一のサブスクリプションURIを取得し(M1302及びM1303)、中継装置101によるプッシュ型のデータ送信を要求するための転送要求を送信する(M1305及びM1306)。サーバ装置104は、プッシュURIを取得し(M1304)、取得したプッシュURIに基づくデータを中継装置101へ送信する(M1307)。中継装置101は、サーバ装置104から受信したデータを、そのデータのプッシュURIに対応するサブスクリプションURIに基づく転送要求を送信したクライアント装置102及びクライアント装置103へ転送する(M1310及びM1313)。
このように、本実施形態の通信システム100によれば、サーバ装置104から中継装置101への1回のデータ送信で、クライアント装置102及びクライアント装置103の両方へのプッシュ型のデータ送信を実現することができる。すなわち、サーバ装置104が中継装置101を介してクライアント装置102及びクライアント装置103にメッセージを送信する際に、サーバ装置104から中継装置101への配信メッセージを省略することができる。これにより、サーバ装置104及び中継装置101の通信に係る処理負荷を軽減することができ、またサーバ装置104がプッシュURIとサブスクリプションURIを管理するために使用するメモリ容量を減らせるという効果もある。
また、中継装置101に識別子リストに保存された使用済みのプッシュURIとサブスクリプションURIを削除するためのアンサブスクライブはクライアント装置102及びクライアント装置103の何れか一方が行えばよくなる。そのため、クライアント装置102及びクライアント装置103の処理負荷を軽減できるという効果もある。さらに、本実施形態の通信システム100によれば、サーバ装置104から送信される同一のデータが、クライアント装置102とクライアント装置103の両方により受信される。例えば、クライアント装置102がユーザの自宅にあるPCで、クライアント装置103がユーザの持っている携帯端末であった場合に、ユーザは在宅時にはPCで受信したデータを閲覧し、外出時には携帯端末で受信データを閲覧するようなことが可能となる。
[装置の動作フロー]
次に、通信システム100内の各装置の動作フローについて説明する。なお、図4から図10を用いて以下で説明する処理は、各装置のCPU201がROM202に格納されたプログラムをRAM203に展開して実行することで実現される。ただし、以下で説明する処理の少なくとも一部が、CPU201とは異なる専用のハードウェアにより実現されてもよい。
図4は、中継装置101が識別子を生成する際の処理を説明するためのフローチャートである。図4に示す処理は、中継装置101がクライアント装置102もしくはクライアント装置103から識別子要求(サブスクライブ)を受信するタイミングで開始される。S501において、中継装置101は、クライアント装置102もしくはクライアント装置103から識別子要求を受信する。S502において、中継装置101は、識別子としてサブスクリプションURIとプッシュURIを生成する。S503において、中継装置101は、S501での識別子要求の送信元であるクライアント装置102もしくはクライアント装置103に識別子を送信する。S504において、中継装置101はS502で生成した識別子を図11(a)に示すRAM203内の識別子リストに保存する。
図5は、中継装置101が転送要求を受信した際の処理を説明するためのフローチャートである。図5に示す処理は、中継装置がクライアント装置102もしくはクライアント装置103から転送要求を受信するタイミングで開始される。S601において、中継装置101は、クライアント装置102もしくはクライアント装置103から識別子を含む転送要求を受信する。S602において、中継装置101は、S601で受信した識別子とS504で識別子リストに保存した識別子を比較し、受信した識別子が識別子リストに含まれている場合はS603に進み、含まれていない場合はS604に進む。
S603において、中継装置101は、S601で受信した転送要求の送信元であるクライアント装置のデバイス情報を図11(b)に示すRAM203内のプッシュ配信リストに保存する。本実施形態におけるデバイス情報は、中継装置101がクライアント装置を一意に特定することができる情報である。具体的には、クライアント装置の機器ID、MACアドレス、又はクライアント装置と中継装置との間のコネクションの識別情報などである。S604において、中継装置101は、S601での転送要求の送信元であるクライアント装置102もしくはクライアント装置103にエラーレスポンスを送信する。
図6は、中継装置101がクライアント装置102及びクライアント装置103にプッシュメッセージを送信する処理を説明するためのフローチャートである。図6に示す処理は、中継装置101がサーバ装置104から配信メッセージを受信するタイミングで開始される。S701において、中継装置101はサーバ装置104から識別子を含む配信メッセージを受信する。S702において、中継装置101は、S701で受信した識別子とS504で識別子リストに保存した識別子を比較し、受信した識別子が識別子リストに含まれている場合はS703に進み、含まれていない場合はS704に進む。
S703において、中継装置101はサーバ装置104に配信レスポンスを送信する。S704において、中継装置101はサーバ装置104にエラーレスポンスを送信する。S705において、中継装置101は、S603で保存したプッシュ配信リストにおいてS701で受信した識別子と対応するデバイス情報それぞれについて、S706からS708の処理を行う。S706において、中継装置101は、対象のデバイス情報に対応するクライアント装置にプッシュ予約を送信する。S707において、中継装置101は、対象のデバイス情報に対応するクライアント装置にプッシュメッセージを送信する。S708において、中継装置101は、S707でのプッシュメッセージの送信先のクライアント装置からプッシュレスポンスを受信する。
S701で受信されたプッシュURIと対応するデバイス情報がプッシュ配信リストに複数保存されている場合、S705からS708において中継装置101は、S701において受信した配信メッセージを当該複数のクライアント装置へ転送する。ここで、同一のプッシュURIと対応するデバイス情報がプッシュ配信リストに複数保存されている場合とは、すなわち中継装置101が同一のサブスクリプションURIに基づく転送要求を複数のクライアント装置から受信していた場合である。図3を用いて上述した例では、クライアント装置102のデバイス情報と、中継装置101から識別子が直接送信されていないクライアント装置103のデバイス情報との両方が、M1305及びM1306の転送要求に応じてプッシュ配信リストに保存される。
図7は、クライアント装置102が中継装置101から識別子を受信し、クライアント装置103及びサーバ装置104に識別子を送信する処理を説明するためのフローチャートである。図7に示す処理は、例えばクライアント装置102にユーザの操作などによって識別子要求の指示がなされたタイミングで開始される。ただし、図7に示す処理の開始タイミングは上記タイミングに限定されない。
S801において、クライアント装置102は中継装置101に識別子要求を送信する。S802において、クライアント装置102は中継装置101から識別子を受信する。S803において、クライアント装置102は自装置が有するRAM203内の識別子リストにS802で受信した識別子を保存する。S804において、クライアント装置102は、送信対象装置それぞれについてS805の処理を行う。本実施形態における送信対象装置はクライアント装置103及びサーバ装置104を指すが、これに限らない。例えば、識別子を管理するための情報管理装置(不図示)を送信対象装置とし、クライアント装置102は他の装置との間の識別子のやり取りを、情報管理装置を介して行ってもよい。S805において、クライアント装置102は送信対象装置に識別子を送信する。
図8は、クライアント装置103がクライアント装置102から識別子を取得する処理を説明するためのフローチャートである。図8に示す処理は、クライアント装置103がクライアント装置102から識別子を受信するタイミングで開始される。S901において、クライアント装置103はクライアント装置102から識別子を受信する。S902において、クライアント装置103は自装置が有するRAM203内の識別子リストにS901で受信した識別子を保存する。なお、サーバ装置104がクライアント装置102から識別子を取得する処理についても、図8を用いて説明した処理と同様である。
図9は、クライアント装置102が中継装置101からプッシュメッセージを受信する処理を説明するためのフローチャートである。図9に示す処理は、例えばクライアント装置102にユーザの操作などによって転送要求の指示がなされたタイミングで開始される。ただし、図10に示す処理の開始タイミングは上記タイミングに限定されない。S1001において、クライアント装置102は中継装置101に転送要求を送信する。S1002において、クライアント装置102は中継装置101からの転送終了までS1003からS1006の処理を繰り返す。本実施形態において転送終了となる場合は、例えばクライアント装置102にユーザの操作などによってプッシュメッセージの受信を終了する指示がなされた場合や、クライアント装置102が中継装置101から転送終了を示すメッセージを受信した場合である。なお、転送終了の条件はこれに限らない。
S1003において、クライアント装置102は中継装置101から識別子を含むプッシュ予約を受信する。S1004において、クライアント装置102は中継装置101からプッシュメッセージを受信するまで待機する。S1005において、クライアント装置102は中継装置101からプッシュメッセージを受信する。S1006において、クライアント装置102は中継装置101にプッシュレスポンスを送信する。なお、クライアント装置103が中継装置101からプッシュメッセージを受信する処理についても、図9を用いて説明した処理と同様である。
図10は、サーバ装置104が中継装置101に配信メッセージを送信する処理を説明するためのフローチャートである。図10に示す処理は、例えばサーバ装置104にユーザの操作などによってデータ送信の指示がなされたタイミングや、サーバ装置104がセンサーなどにより所定のイベントを検知したタイミングで開始される。ただし、図10に示す処理の開始タイミングは上記タイミングに限定されない。S1101において、サーバ装置104は中継装置101に配信メッセージを送信する。S1102において、サーバ装置104は中継装置101から配信レスポンスを受信する。
[変形例]
上述した本実施形態については、その主旨を逸脱しない範囲で種々の変形が可能である。例えば、クライアント装置102は中継装置101にサブスクライブを送信する際に、併せて認証情報を送信してもよい。中継装置101は、受信した認証情報と識別子とを関連づけて記憶する。そして中継装置101は、他の装置からアンサブスクライブ(識別子リストに保存された識別子の削除要求)のメッセージを受信した際に、そのメッセージにサブスクライブ時に受信した認証情報が含まれている場合のみ、保存済みの識別子を削除してもよい。これにより、中継装置101に登録済みの識別子が、クライアント装置102のユーザが意図しないタイミングで他の装置により削除されることを防げるという効果がある。またクライアント装置102は、クライアント装置103に識別子を送信する際に、併せて認証情報を送信するか否かを切り替え可能であってもよい。これにより、クライアント装置103によるアンサブスクライブを許可するか否かをクライアント装置102が制御できるようになる。
また、本実施形態においては、クライアント装置102とクライアント装置103の2台の装置が同一の識別子を用いて中継装置101からプッシュメッセージを受信する場合を中心に説明した。ただしこれに限らず、3台以上のクライアント装置が同一の識別子を用いて中継装置101からのプッシュメッセージを受信してもよい。また、クライアント装置102及びクライアント装置103は、複数のサーバ装置からプッシュされるデータを受信してもよい。この場合、サーバ装置ごとに異なる識別子が用いられてもよい。なお、本実施形態では送信される転送要求やデータに識別子が含まれているものとしたが、識別子に基づく転送要求やデータが送信されればよい。例えば、転送要求と識別子とを関連付けるデータが、当該転送要求とは別に送信されてもよい。
また、本実施形態では、中継装置101が、サーバ装置104から受信したデータを、転送要求の送信元であるすべてのクライアント装置に転送する場合について説明した。ただしこれに限らず、中継装置101は、サーバ装置104から受信したデータを、転送要求の送信元である複数のクライアント装置のうちの一部のクライアント装置にのみ転送してもよい。中継装置101は、データをすべてのクライアント装置に転送するか一部のクライアント装置にのみ転送するかの判定を、例えばサーバ装置104から送信されるデータに付加された情報に基づいて行えばよい。これにより、例えばサーバ装置104からクライアント装置102とクライアント装置103の少なくとも何れか一方にデータが送信されればよい場合に、中継装置101のデータ転送に係る処理負荷を低減できる。なお、データをすべてのクライアント装置に転送するか一部のクライアント装置にのみ転送するかの判定方法は上記に限らず、クライアント装置102からの送信される情報や中継装置101の処理負荷などに基づいて行われてもよい。
また、本実施形態では、中継装置101が、識別子リストに含まれていない識別子に対応する転送要求や配信メッセージを受信した場合にエラーレスポンスを送信するものとした(S604、S704)。ただし、エラーレスポンスの送信タイミングはこれに限らない。例えば、中継装置101は、所定数以上のクライアント装置から転送要求を受信した場合に、クライアント装置に対してエラーレスポンスを送信してもよい。また、中継装置101は、所定数以上のサブスクリプションURIに対応する転送要求を受信した場合や、同一のサブスクリプションURIに対応する転送要求を所定数以上のクライアント装置から受信した場合に、エラーレスポンスを送信してもよい。これにより、プッシュメッセージの送信に係る中継装置101の処理負荷が過大になることを抑制できる。上記の所定数は、例えば中継装置101に対するユーザ操作により設定されてもよいし、中継装置101の処理負荷などに応じて自動で設定されてもよい。
なお、本実施形態では、中継装置101がエラーレスポンスを送信することで他の装置に対してエラーを通知するものとしているが、エラー通知の方法はこれに限らない。中継装置101は例えば、表示部205にエラーを示す画像を表示することで、ユーザに対してエラーの発生を通知してもよい。また中継装置101は、LEDランプを点灯させたり、スピーカーから音を発したりすることで、エラー通知を行ってもよい。
また、本実施形態では、中継装置101とクライアント装置102やクライアント装置103との間の通信は、HTTP/2において規定されるコネクション及びストリームを使用して行われるものとした。一方、中継装置101とサーバ装置104との間の通信は、HTTP/1.1に従うものとした。ただし、通信システム100内で行われる通信の方式はこれらに限定されない。例えば、中継装置101とサーバ装置104との間の通信もHTTP/2に従う通信であってもよい。また、HTTP/1.1やHTTP/2に限らず、WebSocketやQUIC(Quick UDP Internet Connections)などの他の通信規格に従って通信が行われてもよい。この場合、各規格に応じた形式のメッセージや論理的な接続を使用して通信が行われる。また、本実施形態ではWebPushプロトコルに基づくプッシュ型のデータ送信が行われる例を説明したが、これに限らず、プッシュ通知を送受信するための他のプロトコルにも本実施形態を適用することができる。
また、本実施形態では、図3に示すように、クライアント装置102が中継装置101から識別子を受信し、受信した識別子をクライアント装置103及びサーバ装置104に通知する場合について説明した。そしてクライアント装置103は、サーバ装置104から中継装置101へ送信されたデータを、クライアント装置102から受信した当該識別子を用いて取得するものとした。ただし、通信システム100内の各装置の間で識別子を共有する方法はこれに限らない。例えば、サーバ装置104が中継装置101から識別子を受信し、受信した識別子をクライアント装置102及びクライアント装置103に通知してもよい。以下では、この場合の通信システム100内における通信シーケンスの例について、図12を用いて説明する。
図12に示すシーケンスは、クライアント装置102、クライアント装置103、及びサーバ装置104のそれぞれと中継装置101との間の接続が確立されたタイミングで開始される。ただし、図12の処理の開始タイミングは上記タイミングに限定されない。図12に示す各通信処理は、通信システム100内の各装置のCPU201が通信部207などを制御することで実行される。なお、M1405~M1414の処理は図3のM1305~M1314の処理と同様であるため、説明を省略する。
M1401において、サーバ装置104は中継装置101にサブスクライブ(識別子の情報要求)を行う。中継装置101はサーバ装置104からのサブスクライブを受け付け、プッシュURIとそれに対応するサブスクリプションURIを生成する。M1402において、中継装置101は、M1401におけるサーバ装置104からの要求に応じてプッシュURIとサブスクリプションURIを含むレスポンスを送信する。サーバ装置104はレスポンスを受信し、プッシュURIとサブスクリプションURIをRAM203などに保存する。
M1403において、サーバ装置104はクライアント装置102にプッシュURIとサブスクリプションURIを送信する。クライアント装置102はプッシュURIとサブスクリプションURIを受信し、プッシュURIとサブスクリプションURIをRAM203などに保存する。M1404において、サーバ装置104はクライアント装置103にプッシュURIとサブスクリプションURIを送信する。クライアント装置103はプッシュURIとサブスクリプションURIを受信し、プッシュURIとサブスクリプションURIをRAM203などに保存する。
M1403において送信される識別子(プッシュURI及びサブスクリプションURI)と、M1404において送信される識別子は、何れもM1402において中継装置101から送信された識別子である。すなわち、M1403及びM1404において、サーバ装置104は、同一の識別子をクライアント装置102とクライアント装置103とに送信する。なお、サーバ装置104はM1403及びM1404において、プッシュURIを送信せずサブスクリプションURIだけを送信してもよい。
以上の処理により、図3で説明したM1301~M1304の処理と同様、通信システム100内の各装置の間で識別子を共有することができる。そしてM1405以降の処理では、M1403及びM1404において送信された識別子を用いて、クライアント装置102及びクライアント装置103が中継装置101からプッシュメッセージを取得する。このような方法によれば、M1407においてサーバ装置104がクライアント装置102及びクライアント装置103へ送信すべきデータを中継装置101へ1回送信するだけで、複数の装置へのプッシュによるデータ送信を実現できる。なお、配信メッセージの転送先を指定するために、M1407においてサーバ装置104から送信される配信メッセージには、M1403及びM1404でクライアント装置へ送信したサブスクリプションURIに対応するプッシュURIが含まれる。
<その他の実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC等)によっても実現可能である。また、そのプログラムをコンピュータにより読み取り可能な記録媒体に記録して提供してもよい。
100 通信システム
101 中継装置
102 クライアント装置
103 クライアント装置
104 サーバ装置

Claims (13)

  1. サーバ装置から受信したデータをクライアント装置へ転送する通信装置であって、
    前記通信装置とは別の装置からの情報要求に応じて、前記別の装置に対し第1情報および第2情報を発行する発行手段と、
    前記別の装置から前記第1情報を取得したクライアント装置から、前記第1情報とともに転送要求を受信する第1受信手段と、
    前記別の装置から前記第2情報を取得したサーバ装置から、前記第2情報とともに前記転送要求の送信元であるクライアント装置へ転送すべきデータを受信する第2受信手段と、
    前記第1受信手段が前記転送要求を複数のクライアント装置から受信した場合、前記第2受信手段により受信されたデータを、前記第2情報に関連する前記第1情報とともに転送要求を送信した前記複数のクライアント装置に対して転送する転送手段とを有し、前記別の装置とは、前記第2情報に関連する前記第1情報を送信した前記複数のクライアント装置のうちの1つであることを特徴とする通信装置。
  2. 前記第1受信手段は、前記通信装置によるプッシュ型のデータ送信を要求するための転送要求をクライアント装置から受信し、
    前記転送手段は、前記第2受信手段による前記サーバ装置からのデータの受信に応じたタイミングで当該データを前記複数のクライアント装置へ転送することを特徴とする請求項1に記載の通信装置。
  3. 前記別の装置は、前記複数のクライアント装置の何れかであることを特徴とする請求項1又は2に記載の通信装置。
  4. 前記別の装置は、前記第1情報および第2情報をクライアント装置へ通知する前記サーバ装置であることを特徴とする請求項1又は2に記載の通信装置。
  5. 前記発行手段は、前記別の装置からの前記情報要求に応じて、前記第1情報として第1URIを、前記第2情報として第2URIを発行し、
    それぞれのURIを前記別の装置へ送信することを特徴とする請求項1乃至4の何れか1項に記載の通信装置。
  6. 前記第1受信手段が前記転送要求を所定数以上のクライアント装置から受信した場合に、エラー通知を行う通知手段を有することを特徴とする請求項1乃至5の何れか1項に記載の通信装置。
  7. 前記第2受信手段により受信されるデータを前記複数のクライアント装置のすべてに転送するかを判定する判定手段を有し、
    前記転送手段は、前記第2受信手段により受信されるデータを前記複数のクライアント装置のすべてに転送すると前記判定手段により判定されなかった場合には、当該受信されるデータを前記複数のクライアント装置のうち一部のクライアント装置にのみ転送することを特徴とする請求項1乃至6の何れか1項に記載の通信装置。
  8. 前記判定手段は、前記第2受信手段により受信されるデータを前記複数のクライアント装置のすべてに転送するかを、当該受信されるデータに付加された情報に基づいて判定することを特徴とする請求項7に記載の通信装置。
  9. 前記情報に基づく転送要求は、前記情報を含む転送要求又は前記情報と関連づけられた転送要求であることを特徴とする請求項1乃至8の何れか1項に記載の通信装置。
  10. 前記第1情報および前記第2情報は、それぞれWebPushプロトコルにおいて規定されるサブスクリプションURIおよびプッシュURIであることを特徴とする請求項9に記載の通信装置。
  11. 前記通信装置は、前記複数のクライアント装置との通信において、HTTP/2において規定されるサーバとして機能することを特徴とする請求項1乃至10の何れか1項に記載の通信装置。
  12. サーバ装置から受信したデータをクライアント装置へ転送する通信装置の制御方法であって、
    前記通信装置とは別の装置からの情報要求に応じて、前記別の装置に対し第1情報および第2情報を発行する発行ステップと、
    前記別の装置から前記第1情報を取得したクライアント装置から、前記第1情報とともに転送要求を受信する第1受信ステップと、
    前記別の装置から前記第2情報を取得したサーバ装置から、前記第2情報とともに前記転送要求の送信元であるクライアント装置へ転送すべきデータを受信する第2受信ステップと、
    前記第1受信ステップにおいて前記転送要求を複数のクライアント装置から受信した場合、前記第2受信ステップにおいて受信されたデータを、前記第2情報に関連する前記第1情報とともに転送要求を送信した前記複数のクライアント装置に対して転送する転送ステップと、を含み、前記別の装置とは、前記第2情報に関連する前記第1情報を送信した前記複数のクライアント装置の1つであることを特徴とする制御方法。
  13. 請求項12に記載の制御方法をコンピュータに実行させるためのプログラム。
JP2017211157A 2017-10-31 2017-10-31 通信装置、通信方法、及びプログラム Active JP7009163B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017211157A JP7009163B2 (ja) 2017-10-31 2017-10-31 通信装置、通信方法、及びプログラム
US16/158,879 US11196831B2 (en) 2017-10-31 2018-10-12 Communication apparatus, communication method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017211157A JP7009163B2 (ja) 2017-10-31 2017-10-31 通信装置、通信方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2019082954A JP2019082954A (ja) 2019-05-30
JP7009163B2 true JP7009163B2 (ja) 2022-01-25

Family

ID=66670406

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017211157A Active JP7009163B2 (ja) 2017-10-31 2017-10-31 通信装置、通信方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP7009163B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130159377A1 (en) 2011-12-15 2013-06-20 AsystMe, LLC Proactive automated personal assistant
US20140280464A1 (en) 2013-03-12 2014-09-18 Microsoft Corporation Intermediary api for providing presence data to requesting clients
JP2016152024A (ja) 2015-02-19 2016-08-22 富士通株式会社 情報収集装置、情報収集プログラムおよび情報収集方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130159377A1 (en) 2011-12-15 2013-06-20 AsystMe, LLC Proactive automated personal assistant
US20140280464A1 (en) 2013-03-12 2014-09-18 Microsoft Corporation Intermediary api for providing presence data to requesting clients
JP2016152024A (ja) 2015-02-19 2016-08-22 富士通株式会社 情報収集装置、情報収集プログラムおよび情報収集方法

Also Published As

Publication number Publication date
JP2019082954A (ja) 2019-05-30

Similar Documents

Publication Publication Date Title
US9936036B2 (en) Method and system for indirectly establishing a unique communication channel between a plurality of devices
JP6217266B2 (ja) 機器、情報処理端末、情報処理システム、情報処理方法、及びプログラム
CN102763373B (zh) 基于远程访问使用本地网络装置的服务的方法和设备
JP6338344B2 (ja) 通信装置、通信装置の制御方法およびプログラム
US10341519B2 (en) Communication system, image forming apparatus, method of controlling the same, and storage medium
KR101473660B1 (ko) 웹 기반 실시간 데이터 푸싱 방법 및 그 시스템
EP3515047B1 (en) Communication apparatus, image capturing apparatus, control method, and program
JP5524583B2 (ja) 通信端末機器、及び通信中継機器、及びその制御方法
WO2018084033A1 (ja) 共有装置、動作制御プログラム及び動作制御方法
JP2020021252A (ja) 中継装置、制御方法、及び、プログラム
US8909600B2 (en) Information processing apparatus, information processing method, and storage medium
JP2018200520A (ja) 通信装置、通信方法、およびプログラム
US20150135248A1 (en) Image pickup apparatus, image pickup system, control method for image pickup apparatus, and recording medium
JP2015228112A (ja) 通信機器、その制御方法、プログラム
WO2014150309A1 (en) System and method for prioritizing file transfer
JP7009163B2 (ja) 通信装置、通信方法、及びプログラム
JP2012173801A (ja) 通信装置、その制御方法及びプログラム
JP6458512B2 (ja) 通信機器
US9900829B2 (en) Communication device, method for controlling the communication device, and program
JP6942609B2 (ja) 通信装置、通信方法、及びプログラム
JP6559587B2 (ja) 通信装置、通信システムおよび通信プログラム
US11196831B2 (en) Communication apparatus, communication method, and storage medium
US9106608B2 (en) Communication device, communication method, and non-transitory computer-readable recording medium
JP2020088712A (ja) 通信装置およびその制御方法
JP6998746B2 (ja) 通信装置、通知装置、中継装置、通信システム、各装置の制御方法、および、プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200911

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210616

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210622

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210714

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210824

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210827

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210921

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211112

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211214

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220112