JP6559587B2 - 通信装置、通信システムおよび通信プログラム - Google Patents

通信装置、通信システムおよび通信プログラム Download PDF

Info

Publication number
JP6559587B2
JP6559587B2 JP2016014859A JP2016014859A JP6559587B2 JP 6559587 B2 JP6559587 B2 JP 6559587B2 JP 2016014859 A JP2016014859 A JP 2016014859A JP 2016014859 A JP2016014859 A JP 2016014859A JP 6559587 B2 JP6559587 B2 JP 6559587B2
Authority
JP
Japan
Prior art keywords
relay server
connection
message
communication
management unit
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
JP2016014859A
Other languages
English (en)
Other versions
JP2017135611A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2016014859A priority Critical patent/JP6559587B2/ja
Priority to US15/257,169 priority patent/US10320663B2/en
Publication of JP2017135611A publication Critical patent/JP2017135611A/ja
Application granted granted Critical
Publication of JP6559587B2 publication Critical patent/JP6559587B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/44Distributed routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/142Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/143Termination or inactivation of sessions, e.g. event-controlled end of session

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Between Computers (AREA)

Description

本発明は、通信装置、通信システムおよび通信プログラムに関する。
複数のクライアント装置を、インターネット上の中継サーバを介して互いに接続させる双方向通信システムが知られている。複数のクライアント装置のうち第1のクライアント装置は、中継サーバとの間で接続の確立を行い、接続された状態を維持する。第2のクライアント装置も同様に、中継サーバとの間で接続を確立する。第1および第2のクライアント装置と中継サーバとの間で接続が確立された後、例えば第1のクライアント装置からメッセージが送出されると、中継サーバは、このメッセージを第2のクライアント装置に転送する。クライアント装置の台数が大規模化した際には、中継サーバの数が複数台となる構成を考えることもできる。
このような双方向通信システムにおいて、複数の中継サーバのうち所定数の中継サーバをシャットダウンする(スケールインと呼ぶ)ことがある。例えば、夜間など、利用ユーザが少ない時間帯にスケールインを行い、消費電力の節約や、中継サーバのメンテナンスを行う。
特開2011−077890号公報 特開2008−311852号公報
RFC 6455 The WebSocket Protocol、[平成27年12月8日検索]、インターネット(URL:http://tools.ietf.org/html/rfc6455)
従来では、上述のような双方向通信システムにおいてスケールインを実施する場合、シャットダウンされる中継サーバに接続中のクライアント装置において、瞬間的に通信不可状態になるという問題があった。
すなわち、中継サーバがシャットダウンされた場合、その中継サーバに接続中のクライアント装置はそのままでは通信が行えなくなるため、他の利用可能な中継サーバに接続を切り替える必要がある。中継サーバの切り替えの後、メッセージの送信側と受信側のクライアント装置の両方において接続が可能になるまでの間、クライアント装置間でメッセージの通信が行えない状態となる。
本発明が解決する課題は、双方向通信において複数の中継サーバを切り換える際に発生する通信不可状態を回避可能な通信装置、通信システムおよび通信プログラムを提供することにある。
第1の実施形態の通信装置は、中継サーバを介して他の装置と通信を行い、移行元の第1の中継サーバから移行先の第2の中継サーバに接続先を切り替える際に、第2の中継サーバとの接続を確立させた後に、メッセージの送信先を第1の中継サーバから第2の中継サーバに切り替え、その後、第1の中継サーバとの接続を切断する。
図1は、第1の実施形態に適用可能な通信システムの一例の構成を概略的に示すブロック図である。 図2は、第1の実施形態に適用可能な通信システムの一例の構成をより具体的に示すブロック図である。 図3は、情報処理装置として構成されるクライアント装置のハードウェア構成の例を示すブロック図である。 図4は、宅内機器として構成されるクライアント装置のハードウェア構成の例を示すブロック図である。 図5は、第1の実施形態に係るクライアント装置の機能を説明するための一例の機能ブロック図である。 図6は、第1の実施形態に係る通信部の機能を説明するための一例の機能ブロック図である。 図7は、第1の実施形態に係るクライアント装置による接続確立処理およびメッセージ送信処理を説明するための図である。 図8は、第1の実施形態に係る機器リストの例を示す図である。 図9は、第1の実施形態に係るクライアント装置による接続終了処理を説明するための図である。 図10は、第1の実施形態に係る中継サーバの移行処理を概略的に示す図である。 図11は、第1の実施形態に係る中継サーバの移行処理の際のクライアント装置における手順を示す一例のシーケンス図である。 図12は、第1の実施形態の第1の変形例に係る通信システムの構成の例を示すブロック図である。 図13は、第1の実施形態の第2の変形例に係る通信システムの構成の例を示すブロック図である。 図14は、第1の実施形態の第3の変形例に係る通信システムの構成の例を示すブロック図である。 図15は、第1の実施形態に係る通信システムをメッセージブローカシステムに適用した場合の接続確立時および接続終了時の処理を説明するための図である。 図16は、既存技術による映像合成システムの構成を概略的に示す図である。 図17は、第1の実施形態のさらに他の適用例に係る映像合成システムにおける接続確立および接続終了処理について説明するための図である。 図18は、第2の実施形態に係る通信処理について説明するための図である。 図19は、第2の実施形態に係る収集部における処理を示す一例のフローチャートである。
以下、実施形態に係る通信装置、通信システムおよび通信プログラムについて説明する。
(第1の実施形態)
図1は、第1の実施形態に適用可能な通信システムの一例の構成を概略的に示す。図1に示される通信システムは、通信路を介して設備機器を遠隔の情報端末から制御する遠隔制御システムであって、複数のクライアント装置10と、複数の中継サーバ20と、指示部300aとを含む。この通信システムは、実際には、例えば図2により具体的に示されるように、複数のクライアント装置10と、複数の中継サーバ20と、指示部300aとして機能する調停サーバ30とがインターネットなどのネットワーク40により互いに通信可能に接続されて構成される。
クライアント装置10は、通信装置であって、例えば携帯容易な情報処理装置であるスマートフォン(多機能携帯電話)やタブレット型コンピュータを適用可能である。これに限らず、クライアント装置10は、デスクトップ型のコンピュータを適用してもよい。また、クライアント装置10は、例えばユーザの自宅に設置された宅内機器のうち、CPU(Central Processing Unit)および通信インタフェース(I/F)を備え、ネットワーク40に接続可能な機器を適用してもよい。このような機器として、例えば録画装置やエアーコンディショナが考えられる。
各実施形態では、クライアント装置10および中継サーバ20が双方向通信を行うために用いるプロトコルとして、WebSocketに準じたプロトコルを用いる。WebSocketは、IETF(The Internet Engineering Task Force)が策定に関与し、プロトコルの仕様はRFC6455として開示されている(非特許文献1参照)。WebSocketプロトコルは、TCP(Transmission Control Protocol)上で動作する。
クライアント装置10は、WebSocketクライアントとして機能する。また、中継サーバ20は、WebSocketサーバとして機能する。図1の例では、複数のクライアント装置10と、複数の中継サーバ20のうち1台の中継サーバ20とがWebSocket接続(図中に「WS」として示す)により接続されている。
図3および図4は、クライアント装置10のハードウェア構成の例を示す。図3は、情報処理装置として構成されるクライアント装置10aのハードウェア構成の例を示す。
図3において、クライアント装置10aは、CPU1000と、ROM(Read Only Memory)1001と、RAM(Random Access Memory)1002と、グラフィクスI/F1003と、ストレージ1005と、入力デバイス1006と、データI/F1007と、通信I/F1008とを含み、これら各部がバス1010により互いに通信可能に接続される。
ストレージ1005は、ハードディスクドライブや、フラッシュメモリといった不揮発性メモリであって、CPU1000を動作させるためのプログラムや、各種のデータが記憶される。ROM1001は、例えばクライアント装置10を起動させるために用いるプログラムおよびデータが予め記憶される。CPU1000は、ストレージ1005およびROM1001に記憶されるプログラムに従い、RAM1002をワークメモリとして用いて、このクライアント装置10aの全体の動作を制御する。
グラフィクスI/F1003は、CPU1000によりプログラムに従い生成された表示情報を表示信号に変換して表示デバイス1004に供給する。表示デバイス1004は、例えばLCD(Liquid Crystal Display)とLCDを駆動する駆動回路とを含み、グラフィクスI/F1003から供給された表示信号に従った画面を表示する。入力デバイス1006は、ユーザ操作に応じた信号を出力する。入力デバイス1006は、表示デバイス1004と一体的に形成されたタッチパネルを用いることができる。
データI/F1007は、外部機器との間でデータの入出力を行うためのインタフェースであって、例えばUSB(Universal Serial Bus)を適用することができる。通信I/F1008は、TCP/IP(Transmission Control Protocol/Internet Protocol)を通信プロトコルとして用い、ネットワーク40を介した通信を制御する。
図4は、宅内機器として構成されるクライアント装置10bのハードウェア構成の例を示す。なお、図4において、上述の図3と共通する部分には同一の符号を付して、詳細な説明を省略する。図4に示されるように、クライアント装置10bは、CPU1000、ROM1001、RAM1002、ストレージ1005、入力デバイス1006、データI/F1007および通信I/F1008を含み、図3に示した情報処理装置としてのクライアント装置10aと略同様の構成を持つ。
クライアント装置10bは、上述のクライアント装置10aと異なる構成として、グラフィクスI/F1003および表示デバイス1004の代わりに、機能部I/F1020と機能部1021とを含む。機能部1021は、クライアント装置10bの宅内機器としての機能を実現する。例えば、クライアント装置10bが録画装置である場合には、機能部1021は、テレビジョン信号受信機能などを含む。機能部I/F1020は、機能部1021に対するCPU1000のインタフェースである。
図5は、第1の実施形態に係るクライアント装置10の機能を説明するための一例の機能ブロック図である。この図5に示す構成は、上述した情報処理装置としてのクライアント装置10aと、宅内機器としてのクライアント装置10bとに共通して適用できる。
図5において、クライアント装置10は、メッセージ生成部101と、振分部102と、メッセージ処理部103と、収集部104と、接続管理部105と、機器管理部106と、通信部107とを含む。
これらメッセージ生成部101、振分部102、メッセージ処理部103、収集部104、接続管理部105、機器管理部106および通信部107は、CPU1000上で動作する通信プログラムにより実現される。これに限らず、これらメッセージ生成部101、振分部102、メッセージ処理部103、収集部104、接続管理部105、機器管理部106および通信部107の一部または全部を、互いに協働して動作するハードウェア回路により構成してもよい。
通信部107は、例えば、図6に例示されるように、それぞれ固有の識別情報(識別ID)により識別される接続部107aおよび107bを含む。なお、図中では、接続部107aおよび107bは、それぞれ接続部(#1)および接続部(#2)としても示されている。接続部107aおよび107bは、RFC6455で定められたWebSocket接続に対応し、WebSocketによる接続要求に応じて形成され、WebSocketによる接続#1および接続#2を確立する。
メッセージ生成部101は、送信側のクライアント装置10が受信側のクライアント装置10に対して送信するメッセージの生成を行う。メッセージ生成部101は、例えば遠隔制御システムにおいては、制御コマンドを記したメッセージを生成する。
振分部102は、メッセージ生成部101から渡されたメッセージを通信部107に渡し、通信部107に対して、複数の中継サーバ20のうち何れかに送信するように送信依頼する。例えば、振分部102は、通信部107に対して、メッセージを、複数の中継サーバ20のうち第1の中継サーバ20および第2の中継サーバ20のうち何れかに送信するように送信依頼する。振分部102は、後述する接続管理部105から、振り分け先の接続部107aまたは接続部107bの識別情報を入力されることで、以降の振分先を切り替えることができる。
メッセージ処理部103は、後述の収集部104から渡されたメッセージに基づき所定の処理を行う。メッセージ処理部103は、例えば遠隔制御システムにおいては、メッセージに記述された制御コマンドに基づき、クライアント装置10自身の状態に変更を行う。
収集部104は、接続部107aまたは接続部107bを通じて受信したメッセージをメッセージ処理部103に渡す。収集部104は、接続管理部105から、受信元となる接続部107aおよび107bの何れかの識別情報を入力されることで、以降の受信元を切り替えることができる。
接続管理部105は、接続部107aおよび107bによる接続の確立と終了とを行う。さらに、後述の指示部300aからの移行指示の受信を契機として、振分部102と収集部104とが使用する接続部107aおよび107bの移行処理を行う。移行処理の詳細については、後述する。
機器管理部106は、自身のクライアント装置10と双方向通信を行う相手のクライアント装置10の識別情報をRAM1002やストレージ1005に記憶する。
なお、第1の実施形態に係る通信プログラムは、インターネットなどのネットワーク40に接続されたコンピュータ上に格納し、ネットワーク40経由でダウンロードさせることにより提供される。また、第1の実施形態に係る通信プログラムを、インターネットなどのネットワーク40経由で提供または配布するように構成してもよい。
これに限らず、第1の実施形態に係る通信プログラムを、インストール可能な形式または実行可能な形式のファイルでCD(Compact Disk)、DVD(Digital Versatile Disk)などのコンピュータで読み取り可能な記録媒体に記録して提供してもよい。これに限らず、通信プログラムを、ROM1001に予め記憶させて提供してもよい。
第1の実施形態に係る通信プログラムは、上述した各部(メッセージ生成部101、振分部102、メッセージ処理部103、収集部104、接続管理部105、機器管理部106および通信部107)を含むモジュール構成となっており、実際のハードウェアとしてはCPU1000が例えばストレージ1005から当該通信プログラムを読み出して実行することにより上記各部が主記憶装置(例えばRAM1002)上にロードされ、各部が主記憶装置上に生成されるようになっている。
第1の実施形態に係る中継サーバ20は、CPU、ROM、RAM、ストレージおよび通信I/Fを備え、一般的なコンピュータと同等の構成を適用できるので、ハードウェア構成の詳細な説明は、省略する。第1の実施形態に係る中継サーバ20は、WebSocketサーバとして機能する。中継サーバ20は、クライアント装置10からWebSocket接続確立の要求を受けると、RFC6455で定められた手順により当該クライアント装置10との接続を確立する。
さらに、中継サーバ20は、双方向通信を行うペアを構成するクライアント装置10の識別情報の対応関係を記憶する。中継サーバ20は、この対応関係を用いて、一方のクライアント装置10から送信されたメッセージを、当該クライアント装置10とペアをなす他方のクライアント装置10に転送する。このように、中継サーバ20は、複数のクライアント装置10間の双方向通信の中継役として機能する。
第1の実施形態に係る指示部300aは、中継サーバ20のそれぞれに対し、例えば定期的に、現在のWebSocket接続の総数の取得要求を送信する。中継サーバ20は、この取得要求を受けて、自身に接続されるWebSocket接続の接続数を取得し、指示部300aに対して応答する。指示部300aは、各中継サーバ20から得た接続数の情報に基づいて、中継サーバ20のスケールアウトやスケールインを実施するかを判断する。
例えば、指示部300aは、中継サーバ20の性能値から、接続可能なWebSocket接続の上限数を算出し、上限数に対する現状の接続数の割合を算出する。そして、算出した割合を閾値と比較し、当該割合が何れの中継サーバ20においても閾値を超えている場合に、スケールアウト(新規の中継サーバ20のインスタンスの追加)を行うと判定する。一方、特定の中継サーバ20における割合が閾値を下回っている場合に、スケールイン(当該中継サーバ20のインスタンスの破棄)を行うと判定する。
指示部300aは、スケールインを行うと判定した場合、インスタンスを破棄する中継サーバ20に対し、持続中のクライアント装置10の接続を、別の中継サーバ20に移行させるよう、移行指示を出す。この移行指示は、接続を移行させる先の中継サーバ20を識別する識別情報を含む。移行指示を受けた中継サーバ20は、当該中継サーバ20に接続される各クライアント装置10に対して、移行指示を送信する。この移行指示は、各クライアント装置10に受信され、それぞれ接続管理部105に渡される。クライアント装置10において、接続管理部105は、移行指示の受信を契機として、後述する移行処理を開始する。
(第1の実施形態に係る接続および終了処理)
次に、第1の実施形態に係る通信システムにおけるクライアント装置10の接続確立時および接続終了時の処理について説明する。図7を用いて、第1の実施形態に係るクライアント装置10aおよび10bによる接続確立処理およびメッセージ送信処理を説明する。
図7(a)は、中継サーバ20に対して、始めに例えば宅内機器としてのクライアント装置10bがWebSocket接続を確立し、次に、クライアント装置10bの通信相手となる、情報処理装置としてのクライアント装置10aがWebSocket接続を確立する様子を示している。
先ず、一方のクライアント装置10bは、接続管理部105により、クライアント装置10bに対するユーザ操作や、電源オン操作といった所定のイベントを契機として、中継サーバ20に対する接続確立処理を開始する。すなわち、クライアント装置10bにおいて、接続管理部105は、クライアント装置10b自身を識別するクライアント識別情報(「B」とする)を含む接続確立依頼を中継サーバ20に送信し、通信部107において接続部107aを形成する(ステップS10)。
中継サーバ20は、クライアント装置10bから送信されたクライアント識別情報「B」を、自身の記憶領域または外部のデータベースに記憶する(ステップS11)。また、中継サーバ20は、この接続確立依頼に応じて、クライアント装置10bの中継サーバ20に対する接続確立処理を行う。
次に、他方のクライアント装置10aは、接続管理部105により、クライアント装置10a自身のクライアント識別情報(「A」とする)と、通信したい相手のクライアント装置10bのクライアント識別情報「B」とを含む接続確立依頼を中継サーバ20に送信し、通信部107において接続部107aを形成する(ステップS12)。なお、クライアント装置10aは、通信相手のクライアント装置10bのクライアント識別情報「B」を予め知っているものとする。
中継サーバ20は、クライアント装置10aから送信された接続確立依頼に含まれるクライアント識別情報「A」と、クライアント装置10bから送信され記憶したクライアント識別情報「B」との対応関係(対応関係「A−B」とする)を記憶する(ステップS13)。そして、中継サーバ20は、接続確立依頼に応じて、クライアント装置10aの中継サーバ20に対する接続確立処理を行う。これらの処理によりクライアント装置10aとクライアント装置10bとの間での、中継サーバ20を介した双方向通信が可能な状態となる。
さらに、中継サーバ20は、クライアント装置10aとの間で新規に接続確立が行われたことを、クライアント装置10aの通信相手であるクライアント装置10bに通知する(ステップS14)。これを、新規接続通知と呼ぶ。新規接続通知は、接続が確立されたクライアント装置10aのクライアント識別情報「A」を含む。クライアント装置10bは、この新規接続通知を接続部107aにより受信し、機器管理部106に入力する。機器管理部106は、入力された新規接続通知に含まれるクライアント識別情報「A」に基づき、識別情報の一覧(機器リスト)を作成する。
図8(a)は、第1の実施形態に係る、ステップS12により受信されたクライアント識別情報「A」に基づき作成された機器リストの例を示す。図8(a)の例では、機器リストに対し、クライアント識別情報「A」が格納されている。機器管理部106は、作成した機器リストを、RAM1002やストレージ1005に記憶する。このように、機器管理部106は、新規接続通知を受けると、受けた新規接続通知に含まれるクライアント識別情報を一覧に追加する。同様に、クライアント装置10aは、接続確立の完了に応じて、自身の機器管理部106の機器リストに通信相手のクライアント装置10bのクライアント識別情報「B」を加える。
図7(b)は、クライアント装置10bからメッセージが送出された場合の処理の例を示す。クライアント装置10bは、送信元のクライアント装置10bのクライアント識別情報「B」と、宛先のクライアント装置10aのクライアント識別情報「A」とを含むメッセージを、中継サーバ20に向けて送信する(ステップS20)。
中継サーバ20は、このメッセージを解釈し、メッセージから各クライアント識別情報「A」および「B」を抽出する。中継サーバ20は、上述した接続確立処理の際に記憶した対応関係「A−B」を参照して(ステップS21)、クライアント識別情報「A」および「B」が双方向通信を行うペアの関係にあるか否かを判定する。中継サーバ20は、これらがペアの関係にあると判定した場合、当該メッセージをクライアント装置10aに向けて転送する(ステップS22)。
一方、中継サーバ20は、これらがペアの関係には無いと判定した場合、例えばクライアント装置10bに対してエラーメッセージを送信する。
このように、中継サーバ20は、互いに双方向通信を行うクライアント装置10の識別情報の対応関係を管理する。ここで、中継サーバ20において対応関係「A−B」が記憶されている状態で、クライアント識別情報「C」を持つ別のクライアント装置10が中継サーバ20に対して接続確立依頼を行った場合について考える。また、この接続確立依頼における通信相手のクライアント識別情報が「A」であるものとする。この場合、中継サーバ20は、「A−B」および「A−C」という2つの対応関係を記憶することになる。
同様に、クライアント装置10bにおいても、クライアント識別情報「C」のクライアント装置10に関する新規接続通知を受けて、クライアント識別情報「C」を機器リストに追加する。図8(b)は、図8(a)の状態にクライアント識別情報「C」が追加された機器リストの例を示す。
次に、図9を用いて、第1の実施形態に係るクライアント装置10aおよび10bによる接続終了処理を説明する。ここでは、中継サーバ20に対して、クライアント装置10aおよび10bと、上述したクライアント識別情報「C」のクライアント装置10とが接続されているものとする。したがって、中継サーバ20は、「A−B」および「B−C」という2つの対応関係を記憶している。
クライアント装置10aは、接続管理部105により、ユーザ操作など所定のイベントを契機として、自身のクライアント識別情報「A」を含む接続終了通知を中継サーバ20に送信する(ステップS30)。中継サーバ20は、この接続終了通知に応じて、記憶されるクライアント識別情報の対応関係を参照し、クライアント識別情報「A」と対応関係にあるクライアント識別情報(この例ではクライアント識別情報「B」)を探索する。中継サーバ20は、この探索により、対応関係「A−B」および「B−C」を取得する。
中継サーバ20は、取得した対応関係「A−B」に応じて、クライアント装置10bに対し、クライアント装置10aから接続終了通知が送信された旨を通知する。この通知を、離脱通知と呼ぶ(ステップS31)。離脱通知は、接続終了通知の送信元であるクライアント装置10aのクライアント識別情報「A」を含む。クライアント装置10bは、受信した離脱通知を接続部107aを通じて機器管理部106に入力する。機器管理部106は、離脱通知に基づき、機器リストに含まれるクライアント識別情報「A」を削除する(ステップS32)。図8(c)は、図8(b)の状態からクライアント識別情報「A」が削除された機器リストの例を示す。
次に、中継サーバ20は、記憶しているクライアント識別情報「A」と、クライアント識別情報「A」が含まれる対応関係「B−C」を削除する(ステップS33)。そして、中継サーバ20は、処理の完了をクライアント装置10aに通知する(ステップS34)。クライアント装置10aは、この処理完了の通知を受けて中継サーバ20とのWebSocket接続を切断し(ステップS35)、自身の機器管理部106における機器リストから通信相手のクライアント装置10bのクライアント識別情報「B」を削除して、一連の終了処理が完了する。
なお、上述では、離脱通知がクライアント装置10から送出されるものとしているが、これはこの例に限定されない。例えば、クライアント装置10側からの接続の強制切断や、予期しない理由による接続切断を中継サーバ20が検出した場合に、中継サーバ20が当該のクライアント装置10との対応をもつクライアント装置10に対して離脱通知を行う構成であってもよい。例えば、離脱通知として、MQTT(Message Queueing Telemetry Transport) における遺言の機構を利用することができる。
以上に説明したクライアント装置10の接続確立時および終了時の処理により、クライアント装置10は、現在自身と通信相手の状態にあるクライアント装置10のクライアント識別情報を動的に記憶する。
(第1の実施形態に係る中継サーバの移行処理)
次に、第1の実施形態に係る中継サーバ20の移行処理について説明する。図10は、第1の実施形態に係る中継サーバ20の移行処理を概略的に示す。図10(a)に示されるように、通信システムが、2台の中継サーバ20aおよび20bと、それぞれクライアント識別情報「D」、「E」および「F」を持つ3台のクライアント装置10d、10eおよび10fと、指示部300aとを含むものとする。また、クライアント装置10d、10eおよび10fは、それぞれ中継サーバ20aとの間でWebSocketの接続を行っているとする。
さらに、クライアント装置10eおよび10fは、それぞれ、クライアント装置10dを通信相手としており、クライアント装置10dは、機器リストにクライアント識別情報「E」および「F」が格納され、クライアント装置10eおよび10fは、それぞれ、機器リストにクライアント識別情報「D」が格納されているものとする。さらにまた、中継サーバ20aは、対応関係「D−E」および「D−F」を記憶している。
この状態において、指示部300aにより、各クライアント装置10d〜10fの接続を中継サーバ20aから中継サーバ20bに移行する移行指示が、各クライアント装置10d〜10fに出されたものとする。図10(b)は、この移行指示により各クライアント装置10d〜10fの接続が中継サーバ20bに移行された状態の例を示す。なお、移行指示には、移行先の中継サーバ20bの識別情報が含まれている。移行先の中継サーバ20bの識別情報としては、例えば、中継サーバ20bのネットワーク40上でのIP(Internet Protocol)アドレスを用いることができる。
図11は、第1の実施形態に係る中継サーバの移行処理の際のクライアント装置における手順を示す一例のシーケンス図である。なお、図11において、上述した図5および図6、ならびに、図10と共通する部分には同一の符号を付して、詳細な説明を省略する。また、図11に例示される手順は、各クライアント装置10d、10eおよび10fで共通である。ここでは、特に記載の無い限り、各クライアント装置10d、10eおよび10fをクライアント装置10dで代表させて説明を行う。
図11のシーケンス図による手順の開始に先立って、クライアント装置10dでは、通信部107において接続部107aが作成され、この接続部107aにより、クライアント装置10dと中継サーバ20aとの間の接続が確立されているものとする。また、この時点では、クライアント装置10dと中継サーバ20bとの間での接続確立は開始されておらず、接続部107bは作成されていない。
図11において、指示部300aは、移行先の中継サーバ20bの識別情報を含む移行指示を、中継サーバ20aに接続される各クライアント装置10d、10eおよび10fに送信する(ステップS100)。クライアント装置10dは、指示部300aから送信された移行指示を受信すると、受信した移行指示を接続管理部105に入力する。
接続管理部105は、入力された移行指示に応じて、移行指示により指定された中継サーバ20bに対する接続確立依頼を発行し、RFC6455で定められた手順に従って、中継サーバ20bに対するWebSocket接続の確立処理を開始する(ステップS101)。これにより、通信部107において新規に接続部107bが作成される。接続部107bは、中継サーバ20bとの間でWebSocket接続の確立処理を実行する。接続部107bは、中継サーバ20bとの接続の確立に成功すると、その旨を接続管理部105に通知する(ステップS102)。
接続管理部105は、接続部107bからの成功通知を受け取ると、移行元の中継サーバ20aとの接続が維持されている接続部107aに、移行先の中継サーバ20bとの接続確立の完了を示す確立完了通知を送信する(ステップS103)。接続部107aは、確立完了通知に、送信元のクライアント装置10dのクライアント識別情報「D」を含めて、中継サーバ20aに送信する。接続部107aは、確立完了通知の送信に成功すると、その旨を示す通知を接続管理部105に渡す(ステップS104)。
中継サーバ20aは、ステップS104の処理に応じてクライアント装置10dの接続部107aから送信された確立完了通知を受信すると、記憶された対応関係を参照して、クライアント装置10dと対応するクライアント装置10eおよび10fに、当該確立完了通知を転送する。この確立完了通知の転送処理は、図7(a)のステップS14で説明した新規接続通知の転送処理と対応する処理である。
接続管理部105は、機器管理部106に対して機器リスト取得要求を渡す(ステップS105)。機器管理部106は、この機器リスト取得要求に応じて機器リストを取得する(ステップS106)。機器管理部106は、取得した機器リストに基づき、現在クライアント装置10dと通信状態にあるクライアント装置のクライアント識別情報を取得する。ステップS107で、接続管理部105は、取得した機器リストに含まれる全てのクライアント識別情報に対応する確立完了通知を受信するまで待機する。
すなわち、上述したように、中継サーバ20aと通信中のクライアント装置10eおよび10fも、クライアント装置10dと同様にして指示部300aからの移行指示を受信している。したがって、クライアント装置10eおよび10fは、移行指示に応じてステップS101〜ステップS104の処理を行い、確立完了通知を、それぞれの接続部107aから中継サーバ20aを介してクライアント装置10dに送信していることになる。クライアント装置10dにおいて、接続管理部105は、ステップS106で取得した機器リストに格納されるクライアント識別情報「E」および「F」に対応する確立完了通知が受信されるのを待機する。
ステップS107で、接続管理部105は、取得した機器リストに含まれる全てのクライアント識別情報に対応する確立完了通知を受信したと判定した場合、手順が次のステップS108に移行される。ステップS108で、接続管理部105は、振分部102に対し、以降にメッセージ生成部101から渡されたメッセージを、ステップS101で新規に作成された接続部107bを用いて送信するよう切り替える切替指示を出す。振分部102は、この切替指示に従い、メッセージを中継サーバ20bに送信するための所定の処理(例えばメッセージに付加する宛先情報の設定)などを実行し、処理が完了すると、接続管理部105に対して切替完了を通知する(ステップS109)。
接続管理部105は、振分部102からの切替完了の通知を受け取ると、接続部107aを用いて、中継サーバ20aに対して送信終了通知(FIN)を送信する(ステップS110)。送信終了通知とは、その接続部107aを通じたクライアント装置10dからのメッセージ送信が今後行われないことを知らせる通知である。接続管理部105は、送信終了通知に送信元のクライアント装置10dを示すクライアント識別情報「D」を含めて送信する。接続部107aは、中継サーバ20aへの送信終了通知の送信が成功すると、その旨を示す通知を接続管理部105に渡す(ステップS111)。
中継サーバ20aは、クライアント装置10dからの送信終了通知を受信すると、確立完了通知の場合と同様にして、受信した送信終了通知を、クライアント装置10dと対応するクライアント装置10eおよび10fに向けて転送する。この送信終了通知の転送処理も、上述の確立完了通知の転送処理と同様に、図7(a)のステップS14で説明した新規接続通知の転送処理と対応する処理である。
接続管理部105は、接続部107aから成功通知を受け取ると、クライアント装置10eおよび10fから送信される送信終了通知を待機する(ステップS112)。
接続管理部105は、クライアント装置10eおよび10fの両方からの送信終了通知を受信することで、自身すなわちクライアント装置10dに対して、接続部107aを通じて今後どの相手からもメッセージが送信されないと判断できる。接続管理部105は、クライアント装置10eおよび10fの両方からの送信終了通知を受信すると、RFC6455で定められた手順に従い、接続部107aに対して接続終了依頼を送信し(ステップS113)、接続部107aの中継サーバ20aへの接続の切断を行う。
接続部107aは、接続の切断に成功すると、その旨を示す通知を接続管理部105に渡す(ステップS114)。接続管理部105は、接続部107aから接続の切断の成功を示す通知を受け取ると、指示部300aに対してステップS100で受けた移行指示に応じた移行が完了した旨を通知する(ステップS115)。
以上述べた手順により、第1の実施形態によれば、各クライアント装置10d、10eおよび10fは、接続中の中継サーバ20aから中継サーバ20bに移行する際に、移行先の中継サーバ20bとの各接続部107bによる接続が確立され、各クライアント装置10d、10eおよび10fと中継サーバ20bとの間での双方向通信が可能な状態になったと判定したタイミングで、メッセージ送信の送信先を中継サーバ20bに切り替える。そのため、中継サーバ20aから中継サーバ20bに接続を移行する際のメッセージ送信の瞬断が回避できる。
さらに、第1の実施形態によれば、各クライアント装置10d、10eおよび10fは、移行元の中継サーバ20aとの各接続部107aを通じたメッセージの送受信がこれ以上発生しないと判定したタイミングで、接続部107aによる接続を終了する。そのため、リソース消費の解放を速やかに行うことが可能となる。
(第1の実施形態の第1の変形例)
次に、第1の実施形態の第1の変形例について説明する。上述した第1の実施形態では、指示部300aが各クライアント装置10に直接的に移行指示を送信する構成としていたが、これはこの例に限定されない。図12は、第1の実施形態の第1の変形例に係る通信システムの構成の例を示す。図12に例示されるように、第1の実施形態の第1の変形例では、指示部300bは、移行指示を、接続中の中継サーバ20を介して各クライアント装置10に送信するようにしている。
図12の例の場合、指示部300bは、各中継サーバ20から、WebSocket接続の接続数を収集する。そして、指示部300bは、各中継サーバ20から収集した各WebSocket接続数の情報に基づき、例えばある中継サーバ20に接続中の全てのクライアント装置10の接続先を、他の中継サーバ20に移行させるか否かという判定を行う。
例えば、指示部300bは、各中継サーバ20のうち、WebSocket接続数が閾値を超えている中継サーバ20に接続中の全てのクライアント装置10の接続を、他の中継サーバ20に移行させる。移行先の中継サーバ20は、例えば、各WebSocket接続数のうち最も少ないWebSocket接続数の中継サーバ20から順に選択することが考えられる。
そして、指示部300bは、移行先の中継サーバ20の識別情報(IPアドレスなど)を含んだ移行指示を、移行元の中継サーバ20に対し送信する。移行元の中継サーバ20は、この移行指示を受信すると、当該移行元の中継サーバ20に接続する全てのクライアント装置10に対して移行指示を複製して送信する。以降の処理は、図11のステップS101からの処理と同様である。
(第1の実施形態の第2の変形例)
次に、第1の実施形態の第2の変形例について説明する。図13は、第1の実施形態の第2の変形例に係る通信システムの構成の例を示す。上述した第1の実施形態では、指示部300aを、例えば調停サーバ30といった独立したハードウェアを用いて構成していたが、第1の実施形態の第2の変形例では、図13に例示されるように、指示部300cを各中継サーバ20’内部に構成する。
この場合、指示部300cは、自身が属する中継サーバ20’の各種状態(WebSocket接続数や、CPU使用率、メモリ使用量、その他機器の動作状態など)を監視する。各中継サーバ20’の指示部300c間で通信を行い、自身が属する中継サーバ20以外の中継サーバ20’を合わせて監視対象としてもよい。これにより、各指示部300cは、例えば自身が属する中継サーバ20’に障害が生じたなどの判断を契機として移行指示を行うことができる。
(第1の実施形態の第3の変形例)
次に、第1の実施形態の第3の変形例について説明する。図14は、第1の実施形態の第3の変形例に係る通信システムの構成の例を示す。図14に示される通信システムは、図1の通信システムの構成に対して決定部310を追加すると共に、指示部300dを、特定の中継サーバ20に対して終了指示を出すものとしている。また、各クライアント装置10’は、後述する移行先の問い合わせを行うように、構成が若干、変更されている。
すなわち、上述の第1の実施形態では、移行指示の中に、移行先の中継サーバ20の識別情報が含まれる構成としていたが、これはこの例に限定されない。第1の実施形態の第3の変形例では、指示部300dは、特定の中継サーバ20に対して終了指示を出し、終了指示を出した中継サーバ20に接続中の各クライアント装置10’をどの中継サーバ20に移行させるかの指示は出さない。終了指示を受けた中継サーバ20は、移行先の中継サーバ20の識別情報を持たない移行指示を、各クライアント装置10’に送信する。
この場合、各クライアント装置10’は、中継サーバ20から移行指示を受け取ると、決定部310に対して、どの中継サーバ20に移行するかを問い合わせる。決定部310は、第1の実施形態の第1の変形例による指示部300bと同様にして、各中継サーバ20のWebSocket接続の接続数を取得する。決定部310は、各中継サーバ20から収集した各WebSocket接続数の情報に基づき、移行先の中継サーバ20を決定し、移行先に決定された中継サーバ20の識別情報を、各クライアント装置10’からの問い合わせに対する応答とする。各クライアント装置10’は、この応答で示された中継サーバ20に対し、図11のステップS101からの処理を実行して、中継サーバ20の移行処理を行う。
(第1の実施形態の第4の変形例)
次に、第1の実施形態の第4の変形例について説明する。上述した第1の実施形態では、クライアント装置10が互いに新規接続通知と離脱通知とを送信し合うことにより、それぞれの接続管理部105における機器リストを最新の状態に更新していたが、これはこの例に限定されない。クライアント装置10は、新規接続通知と離脱通知とを行わず、代わりに、例えば、過去に自身宛に送信されたメッセージの送信元のクライアント装置10のクライアント識別情報の履歴を記憶しておき、ここから機器リストを構成してもよい。
この場合、例えば、図7(b)のステップS22でのメッセージ送信において、中継サーバ20は、クライアント装置10aに転送するメッセージに対して、送信元のクライアント装置10bのクライアント識別情報を付加する。クライアント装置10aの収集部104は、このメッセージを受信した際に、メッセージに付加された送信元のクライアント識別情報を機器管理部106に渡す。機器管理部106は、収集部104から渡されたクライアント識別情報を、例えばストレージ1005に蓄積的に記憶する。こうすることで、機器管理部106は、今まで自身のクライアント装置10aにメッセージを送ったことがあるクライアント装置10bのクライアント識別情報を管理することができる。
(第1の実施形態の第5の変形例)
次に、第1の実施形態の第5の変形例について説明する。上述した第1の実施形態では、図11のステップS110で送信される送信終了通知に送信元のクライアント装置10のクライアント識別情報が含まれているとしていたが、これはこの例に限定されない。第1の実施形態の第5の変形例では、送信終了通知は、送信元のクライアント装置10のクライアント識別情報を含まないものとする。この場合、接続管理部105は、機器リストに含まれるクライアント装置10の個数分の送信終了通知を受信するまで待機を行う。
例えば、図10(a)および図10(b)を参照し、各クライアント装置10d、10eおよび10fが、中継サーバ20aに接続された状態(図10(a)参照)から中継サーバ20bに接続された状態(図10(b)参照)に移行する場合、例えばクライアント装置10dの接続管理部105は、2個の送信終了通知を受け取るまで待機する。
以上説明したように、第1の実施形態および第1の実施形態の各変形例によれば、クライアント装置10が移行元の中継サーバ20から移行先の中継サーバ20に接続を切り替える際に、移行先の中継サーバ20との接続の確立を、移行元の中継サーバ20との接続の切断に先立って実行している。そのため、接続の切替に伴う瞬間的な通信不可状態を回避することができる。
さらに、第1の実施形態および第1の実施形態の各変形例では、クライアント装置10は、移行先の中継サーバ20との接続完了通知を互いに送り合い、同じ中継サーバ20に接続中の全てのクライアント装置10が接続確立の完了に応じて、メッセージを送信する中継サーバ20の切り替えを行っている。そのため、接続確立の完了するタイミングのクライアント装置10毎の差異に伴うメッセージ送信の瞬断を回避できる。
さらに、第1の実施形態および第1の実施形態の各変形例では、クライアント装置10は、互いに送信終了通知を送り合い、自身宛のメッセージがこれ以上無いことを知ったタイミングで、古い接続を切断する。これにより、接続が不要になったタイミングでリソース消費が解放されるため、中継サーバ20をシャットダウン可能な状態に速やかに移行できる。例えば、中継サーバ20のインスタンスが時間単位で課金される場合、中継サーバ20のインスタンス利用料金を低減することができる。
さらに、第1の実施形態および第1の実施形態の各変形例では、各クライアント装置10は、自身と通信するクライアント装置10の機器リストを常時管理しておき、中継サーバ20の移行処理の際には、機器リストに含まれる全てのクライアント装置10からの送信終了通知を待機する。これにより、双方向通信を行うクライアント装置10の対が複数ある場合でも、移行元の中継サーバ20に対する接続を切断するタイミングを適正に制御することができる。
また、例えば、各クライアント装置10を携帯端末および宅内機器とし、携帯端末から宅内機器の遠隔制御を行う通信システムを考える。従来では、中継サーバ20の切替時には、制御の指示を行ってから実際に完了が確認できるまでに時間差を生じることとなり、利用者にとって使用感を損なうおそれがある。別の例では、災害時の緊急通知など即時性の要求されるメッセージの伝達を行う通信システムにおいては、中継サーバ20の切替時には、通知の遅れにより初期対応の遅れをもたらし、問題が発生するおそれがある。第1の実施形態および第1の実施形態の各変形例に係る通信システムをこれらの事例に適用することで、これらの問題を解決可能である。
(第1の実施形態の別の適用例)
次に、第1の実施形態の別の適用例として、第1の実施形態に係る通信システムを、メッセージブローカシステムに適用した例について説明する。システム構成としては、図1を用いて説明した第1の実施形態による通信システムと同様に、ネットワーク40などの通信路を介してクライアント装置10と中継サーバ20とが接続し、クライアント装置10間の双方向通信を実現する構成を適用できる。
メッセージブローカシステムでは、中継サーバ20は、メッセージを中継するブローカサーバとして機能する。メッセージブローカシステムで送受信されるメッセージには、トピックと呼ばれるアドレスが付加されており、メッセージ送信を行いたいクライアント装置10(パブリッシャと呼ぶ)は、ブローカサーバ(中継サーバ20)に接続した後に、このトピックを宛先としてメッセージの送信を行う。またメッセージを受信したいクライアント(サブスクライバと呼ぶ)は、予めブローカサーバに接続し、ブローカサーバに対して自分が購読したいトピック名を伝えておく。パブリッシャがトピックに対してメッセージ送信すると、そのトピックを購読する全てのサブスクライバに対してブローカサーバからメッセージが配信される。
以降では、メッセージブローカシステムにおいて、クライアント装置10による接続確立処理および接続終了処理と、ブローカサーバ(中継サーバ20)の移行処理の例について説明する。
図15を用いて、第1の実施形態に係る通信システムをメッセージブローカシステムに適用した場合の、クライアント装置10の接続確立時および接続終了時の処理を説明する。図15(a)および図15(b)において、ブローカサーバ21は、上述した中継サーバ20に対応する。また、各クライアント装置10gおよび10hは、コンピュータとしてのクライアント装置10aに対応する。クライアント装置10gおよび10hのクライアント識別情報は、それぞれ「G」および「H」であるとする。
図15(a)は、ブローカサーバ21に対して、例えば始めにクライアント装置10gがWebSocket接続を確立し、次に、クライアント装置10hがWebSocket接続を確立する様子を示している。
クライアント装置10gは、ブローカサーバ21との接続確立処理を行い(ステップS40)、接続が確立されると、通信相手のグループを管理するためのトピック「group1」に対して購読を行う(ステップS41)。例えば、クライアント装置10gの接続管理部105は、購読を行うトピック「group1」の情報を、例えばRAM1002あるいはストレージ1005に記憶する。
次に、クライアント装置10gは、購読を行うトピック「group1」に対して、自身のクライアント識別情報「G」を含むメッセージ「join G」を送信する(ステップS42)。このメッセージ「join G」は、同トピック「group1」を購読する他のクライアント装置(例えばクライアント装置10h)に対して、自身が通信相手として参加したことを通知するメッセージである。
次に、別のクライアント装置10hからも、同様に接続確立処理を行う(ステップS43)。クライアント装置10hは、ブローカサーバ21との接続が確立されると、トピック「group1」に対して購読を行う(ステップS44)。そして、クライアント装置10hは、トピック「group1」に対して、自身のクライアント識別情報「H」を含むメッセージ「join H」を送信する(ステップS45)。このメッセージ「join H」は、トピック「group1」を購読するクライアント装置10gに対して配信される(ステップS46)。
クライアント装置10gは、このメッセージ「join H」の受信に応じて、自身の接続管理部105における機器リストにクライアント識別情報「H」を追加し、機器リストを更新する。各クライアント装置10gおよび10hは、定期的に自身のクライアント識別情報「G」および「H」をメッセージ「join G」および「join H」により送信することで、互いに機器リストを最新状態に保つようにしてもよい。
図15(b)は、クライアント装置10hが接続を終了する際の処理の例を示す。クライアント装置10hは、接続を終了する際に、接続確立時と同じトピック「group1」宛てに、離脱を示すメッセージとして、自身のクライアント識別情報「H」を含むメッセージ「remove H」を送信する(ステップS50)。このメッセージ「remove H」は、ブローカサーバ21を介してクライアント装置10gに配信される(ステップS51)。
クライアント装置10gは、メッセージ「remove H」を受信すると、受信したメッセージ「remove H」に含まれるクライアント識別情報「H」に応じて、クライアント装置10gの接続管理部105の機器リストから、クライアント識別情報「H」を削除する。この処理により、クライアント装置10gは、自身と通信するクライアント装置を管理する機器リストを最新状態に保つことができる。
これに限らず、例えばクライアント装置10hは、MQTTなどのメッセージプロトコルで規定されている遺言の機能を用いて離脱通知を行ってもよい。この場合、例えばクライアント装置10hは、接続確立の後に、離脱通知と同様のメッセージを、MQTTに規定される遺言としてブローカサーバ21に登録しておく。ブローカサーバ21は、クライアント装置10hとの接続が切断された場合に、遺言に基づき、トピック「group1」を購読する他のクライアント装置10gに離脱通知を送信する。
ブローカサーバ21を切り替える際の処理の手順は、図11のシーケンス図のステップS101からの手順に対して、確立完了通知を行うステップS103と、送信終了通知を行うステップS110とが異なる。この第1の実施形態の他の適用例では、トピック「group1」に対して、クライアント装置10gからの、移行先のブローカサーバ21に対する接続部107bによる接続確立の完了時に、例えば「ESTABLISH G」といった、送信元のクライアント装置10gのクライアント識別情報「G」を含む確立完了通知を送信する。同様に、送信終了時に、移行元のブローカサーバ21に対する接続部107aを通じたクライアント装置10gからのメッセージ送信が今後行われない旨の通知として、例えば「FIN G」といった、送信元のクライアント装置10gのクライアント識別情報「G」を含む送信終了通知を送信する。この送信終了通知の後、クライアント装置10hは、ブローカサーバ20とのWebSocket接続を終了させる(ステップS52)。
このように、第1の実施形態に係る通信システムは、メッセージブローカシステムに対しても、同様に適用可能であって、第1の実施形態と同様の効果を得ることが可能となる。特に、メッセージブローカシステムに第1の実施形態を適用した場合、既存のメッセージブローカの実装に改変を加えることなく第1の実施形態の効果を得ることが可能であるため、開発の手数が少なくて済む。
(第1の実施形態のさらに別の適用例)
次に、第1の実施形態のさらに別の適用例として、第1の実施形態に係る通信システムを、映像合成システムに適用した例について説明する。システム構成としては、図1を用いて説明した第1の実施形態による通信システムと同様に、ネットワーク40などの通信路を介してクライアント装置10と中継サーバ20とが接続し、クライアント装置10間の双方向通信を実現する構成を適用できる。
図16は、既存技術による映像合成システムの構成を概略的に示す。映像合成システムは、複数の映像サーバ11と、映像合成サーバ22とを含む。複数の映像サーバ11は、それぞれ映像ソース50a、50bおよび50cを送信する。映像合成サーバ22は、複数の映像サーバ11から送信された映像ソース50a、50bおよび50cを合成して、1以上のビューワ12に送信する。このとき、映像合成サーバ22は、複数のビューワ12に対して、映像ソース50a、50bおよび50cを合成した合成映像を送信する。ビューワ12は、例えば図3に示したコンピュータとしてのクライアント装置10aに対応し、搭載された映像表示プログラムにより、映像合成サーバ22から送信された合成映像を表示する。
ここで、ビューワ12は、映像合成を行う際のレイアウトを予め映像合成サーバ22に指定することができる。映像合成サーバ22は、ビューワ12に指定されたレイアウトで映像ソース50a、50bおよび50cを合成し、合成映像を当該レイアウトを指定したビューワ12に対して送信する。図16の例では、映像合成サーバ22は、各ビューワ12に指定されたレイアウトで映像ソース50a、50bおよび50cを合成した合成映像51aおよび51bを、レイアウトを指定したビューワ12に送信している。
図17を用いて、第1の実施形態のさらに他の適用例に係る映像合成システムにおけるクライアント装置の接続確立および接続終了処理について説明する。ここで、図17において、映像合成サーバ22aおよび22bは、それぞれ図1の中継サーバ20に対応する。また、各映像サーバ11a、11bおよび11c、ならびに、各ビューワ12aおよび12bが、それぞれ図1のクライアント装置10に対応する。各映像サーバ11a、11bおよび11cは、それぞれ映像ソース50a、50bおよび50cを送信する。また、指示部300eは、移行指示を、各映像サーバ11a、11bおよび11c、ならびに、各ビューワ12aおよび12bに送信する。
なお、映像サーバ11a、11bおよび11cは、それぞれクライアント識別情報「Va」、「Vb」および「Vc」を持ち、ビューワ12aおよび12bは、それぞれクライアント識別情報「Ba」および「Bb」を持つものとする。この場合における、各映像サーバ11a、11bおよび11c、ならびに、各ビューワ12aおよび12bが、例えば映像合成サーバ22aとの接続を確立する際の処理について、図17(a)を参照しながら説明する。
映像合成サーバ22aは、各映像サーバ11a、11bおよび11c、ならびに、各ビューワ12aおよび12bの2つの種類のクライアント装置のうち一方の種類のクライアント装置からの接続確立依頼を受信すると、他方の種類のクライアント装置に対して、新規接続通知を送信する。
例えば、映像合成サーバ22aは、一方の種類のクライアント装置としてのビューワ12aからの接続確立依頼を受信した場合、記憶している対応関係に基づき、他方の種類のクライアント装置としての映像サーバ11a、11bおよび11cに対して、ビューワ12aが映像合成サーバ22bに新規に接続される旨を示す新規接続通知を送信する。映像サーバ11a、11bおよび11cは、ビューワ12aの新規接続通知を受信すると、受信した新規接続通知に含まれるクライアント識別情報「Ba」に基づき、それぞれ機器リストを更新する。
各映像サーバ11a、11bおよび11c、ならびに、各ビューワ12aおよび12bが例えば映像合成サーバ22aと接続確立した状態で、各映像サーバ11a、11bおよび11cの機器管理部106は、ビューワ12aおよび12bのクライアント識別情報「Ba」および「Bb」を含む機器リストを記憶している。また、各ビューワ12aおよび12bの機器管理部106は、各映像サーバ11a、11bおよび11cのクライアント識別情報「Va」、「Vb」および「Vc」を含む機器リストを記憶している。さらに、映像合成サーバ22aは、これら各映像サーバ11a、11bおよび11c、ならびに、各ビューワ12aおよび12bの対応関係を記憶している。
各映像サーバ11a、11bおよび11c、ならびに、各ビューワ12aおよび12bが、例えば映像合成サーバ22aに対する接続を終了する際の処理も、同様にして実行される。すなわち、映像合成サーバ22aは、映像合成サーバ22aに接続中の各映像サーバ11a、11bおよび11c、ならびに、各ビューワ12aおよび12bの2つの種類のクライアント装置のうち一方の種類のクライアント装置からの離脱通知を受信すると、他方の種類のクライアント装置に対して離脱通知を送信する。
例えば、映像合成サーバ22aは、一方の種類のクライアント装置としてのビューワ12aからの離脱通知を受信した場合、記憶している対応関係に基づき、他方の種類のクライアント装置としての映像サーバ11a、11bおよび11cに対してビューワ12aが離脱する旨を示す離脱通知を送信する。映像サーバ11a、11bおよび11cは、ビューワ12aの離脱通知を受信すると、受信した離脱通知に含まれるクライアント識別情報「Ba」に基づき、それぞれ機器リストを更新する。
各映像サーバ11a、11bおよび11c、ならびに、各ビューワ12aおよび12bは、指示部300eから移行指示を受け取ると、図11のステップS101からの処理を実行して、例えば接続中の映像合成サーバ22aから移行先の映像合成サーバ22bへの接続の移行処理を行う。
(第2の実施形態)
次に、第2の実施形態について説明する。上述した第1の実施形態および第1の実施形態の各変形例では、クライアント装置10は、中継サーバ20の切替時に、送信終了通知を送信するようにしている。これに対して、第2の実施形態に係る通信システムでは、クライアント装置10は、送信終了通知の送信を行わずに、送信されるメッセージに所定の規則でユニークに変化する値、例えば昇順の通し番号を付加し、この通し番号に基づき中継サーバ20の切替完了を検知する。
図18を用いて、第2の実施形態に係る通信処理について説明する。なお、第2の実施形態に係る通信システムは、図1を用いて説明した第1の実施形態に係る通信システムの構成をそのまま適用可能である。図18は、クライアント装置10から第2の実施形態の動作に関連の深い部分(図5および図6の収集部104、接続管理部105、接続部107a、接続部107b)を抜き出して示している。以降、適宜、図1、図5および図6を参照しながら説明を行う。
また、図18の例では、例えば図11のステップS108までの処理が実行され、接続部107aが移行元の中継サーバ20に接続され、接続部107bが移行先の中継サーバ20に接続されているものとする。
図5を参照し、振分部102は、メッセージ生成部101から渡されたメッセージに対して、メッセージの順序を識別するための通し番号(シーケンス番号)を付与する。ネットワーク40を介したデータの送信は、一般的には、データを所定サイズに分割してヘッダ情報などを付加したパケット単位で行われる。例えば、振分部102は、シーケンス番号をパケット毎に生成してヘッダに格納する。以下では、シーケンス番号は、1ずつ増加する値であるものとする。
また、図18において、収集部104は、受信したメッセージからシーケンス番号を抽出し、抽出したシーケンス番号の値がメッセージ毎に連続的に増加することを確認する。接続管理部105は、図11のステップS108において振分部102への切替指示を行った後で、図18に示すように、収集部104に対して待機依頼を行う。
収集部104は、接続部107aおよび接続部107bから渡されたメッセージに付加されているシーケンス番号を監視し、接続部107aから最後に受信したメッセージのシーケンス番号(この例では「3」)の次のメッセージ(シーケンス番号「4」のメッセージ)を接続部107bから受信するまで待機する。具体的な例として、収集部104は、接続部107aから受信したメッセージに付加されたシーケンス番号のうち最大のシーケンス番号よりも1だけ大きい値のシーケンス番号が付加されたメッセージを接続部107bから受信するまで待機する。
収集部104は、当該メッセージを受信すると、接続部107aから接続部107bへの切り替えが完了したと判定し、処理を接続管理部105に戻す。そして、接続管理部105は、移行元の中継サーバ20に接続される接続部107aの接続終了依頼を行う。このような手順によっても、接続管理部105は、自身のクライアント装置10に対して、接続部107aを通じて今後どの通信相手からもメッセージが送信されないことを知ることができる。
図19は、第2の実施形態に係る収集部104における処理を示す一例のフローチャートである。ステップS200で、収集部104は、接続部107aまたは接続部107bから、受信されたメッセージを受け取る。次のステップS201で、収集部104は、受信したメッセージが付加されるシーケンス番号を取得する。
次のステップS202で、収集部104は、ステップS201で取得したシーケンス番号が、取得済みのシーケンス番号のうち最大のシーケンス番号の次の番号(値が1だけ大きい番号)であるか否かを判定する。収集部104は、当該シーケンス番号が最大のシーケンス番号の次の番号ではないと判定した場合(ステップS202、「No」)、処理をステップS200に戻し、次のメッセージに対する処理を行う。
一方、収集部104は、当該シーケンス番号が最大のシーケンス番号の次の番号であると判定した場合(ステップS202、「Yes」)、処理をステップS203に移行させる。ステップS203で、収集部104は、当該シーケンス番号が付加されるメッセージを接続部107aおよび107bの何れから受け取ったかを示す取得元情報(接続ID)を取得する。収集部104は、取得元情報と、ステップS201で取得したシーケンス番号とを関連付けてRAM1002などに記憶する。
次のステップS204で、収集部104は、ステップS203で取得した取得元情報と、ステップS201で取得したシーケンス番号よりも1つ前の(値が1つ小さい)シーケンス番号に関連付けられた取得元情報とを比較し、これらが異なる取得元を示しているか否かを判定する。例えば、ステップS203で取得した取得元情報(接続ID)が接続部107bを示し、1つ前のシーケンス番号に関連付けられた取得元情報が接続部107aを示している場合、異なっていると判定する。収集部104は、取得元が同じであると判定した場合(ステップS204、「No」)、処理をステップS200に戻す。
収集部104は、取得元が異なっていると判定した場合(ステップS204、「Yes」)、処理をステップS205に移行する。ステップS205で、収集部104は、切り替え完了を接続管理部105に通知する。このステップS205の処理は、例えば、図11のステップS109〜ステップS111の処理に対応する。
なお、各実施形態は、上述したそのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上述の実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
10,10’,10a,10b,10d,10e,10f,10g,10h クライアント装置
11,11a,11b、11c 映像サーバ
12a,12b ビューワ
20,20’,20a,20b 中継サーバ
21 ブローカサーバ
22,22a,22b 映像合成サーバ
30 調停サーバ
40 ネットワーク
101 メッセージ生成部
102 振分部
103 メッセージ処理部
104 収集部
105 接続管理部
106 機器管理部
107 通信部
107a,107b 接続部
300a,300b,300c,300d 指示部
310 決定部

Claims (10)

  1. 中継サーバを介して他の装置と通信を行う通信装置であって、
    移行元の第1の中継サーバから移行先の第2の中継サーバに接続先を切り替える際に、
    前記第2の中継サーバとの接続を確立した後に前記第1の中継サーバに該第2の中継サーバとの接続確立が完了した旨を示す接続完了通知を送信し、
    前記第1の中継サーバからの、前記他の装置による前記接続完了通知を受信した場合に、メッセージの送信先を該第1の中継サーバから該第2の中継サーバに切り替え、
    該第1の中継サーバとの接続を切断する、
    接続管理部
    を備える通信装置。
  2. 前記接続管理部は、
    前記メッセージの送信先を前記第1の中継サーバから前記第2の中継サーバに切り替えた後、該第1の中継サーバに送信終了通知を送信し、該第1の中継サーバからの、前記他の装置による送信終了通知を受信した場合に、該第1の中継サーバとの接続を切断する
    請求項1に記載の通信装置。
  3. 通信先となる前記他の装置を示す情報を管理する機器管理部をさらに備え、
    前記接続管理部は、
    前記機器管理部に管理される前記情報に基づき前記接続完了通知を受信する
    請求項1または請求項2に記載の通信装置。
  4. 前記接続管理部は、
    前記機器管理部に管理される前記情報の数に応じた前記他の装置からの前記接続完了通知を受信した場合に、前記メッセージの送信先を該第1の中継サーバから該第2の中継サーバに切り替える
    請求項3に記載の通信装置。
  5. 前記接続管理部は、
    前記機器管理部に管理される前記情報に対応する全ての前記他の装置からの前記接続完了通知を受信した場合に、前記メッセージの送信先を該第1の中継サーバから該第2の中継サーバに切り替える
    請求項3に記載の通信装置。
  6. 前記接続管理部は、
    前記第2の中継サーバとの接続の確立の際に、自装置を識別する識別情報を含む新規接続通知を前記他の装置に向けて送信し、
    前記機器管理部は、
    前記他の装置から送信された前記新規接続通知に応じて前記情報を更新する
    請求項3乃至請求項5の何れか1項に記載の通信装置。
  7. 前記接続管理部は、
    前記第1の中継サーバとの接続を切断する際に、自装置を識別する識別情報を含む離脱通知を前記他の装置に向けて送信し、
    前記機器管理部は、
    前記他の装置から送信された前記離脱通知に応じて前記情報を更新する
    請求項3乃至請求項6の何れか1項に記載の通信装置。
  8. 前記接続管理部は、
    前記メッセージに、該メッセージ毎に所定増分が増加する値を付加して送信し、前記他の装置から受信した第1のメッセージに、既に受信済みの第2のメッセージに付加された最大の値に対して該所定増分が増加した値が付加される場合に、該第1のメッセージの送信元と該第2のメッセージの送信元とが異なるか否かを判定し、異なると判定された場合に、前記第1の中継サーバとの接続を切断する
    請求項1に記載の通信装置。
  9. 第1の中継サーバおよび第2の中継サーバを含む複数の中継サーバと、該複数の中継サーバの何れかを介して互いに通信を行う少なくとも2の通信装置とを含む通信システムであって、
    前記通信装置は、
    移行元の前記第1の中継サーバから移行先の前記第2の中継サーバに接続先を切り替える際に、
    前記第2の中継サーバとの接続を確立した後に前記第1の中継サーバに該第2の中継サーバとの接続確立が完了した旨を示す接続完了通知を送信し、
    前記第1の中継サーバからの、他の通信装置による前記接続完了通知を受信した場合に、メッセージの送信先を該第1の中継サーバから該第2の中継サーバに切り替え、
    該第1の中継サーバとの接続を切断する、
    接続管理部
    備える通信システム。
  10. 中継サーバを介して他の装置と通信を行う通信装置に搭載されるコンピュータに実行させるための通信プログラムであって、
    移行元の第1の中継サーバから移行先の第2の中継サーバに接続先を切り替える際に、
    前記第2の中継サーバとの接続を確立した後に前記第1の中継サーバに該第2の中継サーバとの接続確立が完了した旨を示す接続完了通知を送信し、
    前記第1の中継サーバからの、前記他の装置による前記接続完了通知を受信した場合に、メッセージの送信先を該第1の中継サーバから該第2の中継サーバに切り替え、
    該第1の中継サーバとの接続を切断する、
    接続管理ステップ
    前記コンピュータに実行させるための通信プログラム。
JP2016014859A 2016-01-28 2016-01-28 通信装置、通信システムおよび通信プログラム Active JP6559587B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016014859A JP6559587B2 (ja) 2016-01-28 2016-01-28 通信装置、通信システムおよび通信プログラム
US15/257,169 US10320663B2 (en) 2016-01-28 2016-09-06 Communication device, communication system, and computer program product for performing interactive communication via relay servers

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016014859A JP6559587B2 (ja) 2016-01-28 2016-01-28 通信装置、通信システムおよび通信プログラム

Publications (2)

Publication Number Publication Date
JP2017135611A JP2017135611A (ja) 2017-08-03
JP6559587B2 true JP6559587B2 (ja) 2019-08-14

Family

ID=59386201

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016014859A Active JP6559587B2 (ja) 2016-01-28 2016-01-28 通信装置、通信システムおよび通信プログラム

Country Status (2)

Country Link
US (1) US10320663B2 (ja)
JP (1) JP6559587B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2570427B (en) * 2016-11-25 2021-11-17 Mitsubishi Heavy Ind Mach Systems Ltd Client, broker, communication system, communication method, and program
US11315408B1 (en) * 2018-09-28 2022-04-26 CauZway, LLC Emergency communications system

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11163947A (ja) * 1997-09-22 1999-06-18 Toshiba Corp ゲートウェイ装置、無線端末装置、ルータ装置および通信ネットワークのゲートウェイ制御方法
US20050058063A1 (en) * 2003-09-15 2005-03-17 Dell Products L.P. Method and system supporting real-time fail-over of network switches
US20050265284A1 (en) * 2003-10-10 2005-12-01 Hsu Liangchi Alan Apparatus, and associated method, for facilitating communication handoff in multiple-network radio communication system
JP2008225644A (ja) * 2007-03-09 2008-09-25 Nec Corp ゲートウェイ装置、ゲートウェイ装置の負荷分散方法及びゲートウェイ装置の負荷分散プログラム
JP4268200B2 (ja) 2007-06-13 2009-05-27 古河電気工業株式会社 冗長化データ中継装置および冗長化データ中継装置を用いた暗号化通信方法
WO2010004897A1 (ja) * 2008-07-09 2010-01-14 日本電気株式会社 グループ会議システム、会議サーバ、セッション切り替え制御方法、セッション切り替え制御プログラム
JP5436451B2 (ja) * 2008-12-26 2014-03-05 パナソニック株式会社 通信端末、通信方法、プログラム
JP4831224B2 (ja) 2009-09-30 2011-12-07 沖電気工業株式会社 中継装置及びプログラム、中継システム、並びに通信システム
JP5597230B2 (ja) * 2012-08-17 2014-10-01 株式会社東芝 情報操作装置、情報出力装置および情報操作プログラム
JP6279938B2 (ja) * 2014-03-10 2018-02-14 株式会社東芝 接続管理装置、通信システム、接続管理方法およびプログラム
JP6378057B2 (ja) 2014-11-13 2018-08-22 株式会社東芝 接続制御装置、接続制御方法、接続制御システムおよびコンピュータプログラム

Also Published As

Publication number Publication date
US10320663B2 (en) 2019-06-11
JP2017135611A (ja) 2017-08-03
US20170222919A1 (en) 2017-08-03

Similar Documents

Publication Publication Date Title
CN102906730A (zh) 用于被管理装置的共享心搏服务
JP6279938B2 (ja) 接続管理装置、通信システム、接続管理方法およびプログラム
KR20120128025A (ko) 피드백 메시지를 이용한 푸시 서비스 제공 시스템 및 방법
JP2016071638A (ja) ソース端末、表示制御システム、表示制御方法、表示制御プログラム
JP2019032686A (ja) 管理装置、管理装置の制御方法、及びプログラム
US20090052651A1 (en) Communication control system, call control server, and communication control method
JP6559587B2 (ja) 通信装置、通信システムおよび通信プログラム
KR102001103B1 (ko) 전자장치, 서버 및 시스템의 제어방법
CN110798745A (zh) 多媒体播放的控制方法、服务器及存储介质
JP5509564B2 (ja) メッセージ送信方法及びプログラム
JP2009206992A (ja) 監視カメラシステム及び監視カメラ管理方法
CN108737460B (zh) 一种连接的处理方法及客户端
CN112948177A (zh) 一种容灾备份方法、装置、电子设备及存储介质
JP2007043390A (ja) 映像配信システム及びその方法
JP2014216817A (ja) 情報端末管理システム
JP7009163B2 (ja) 通信装置、通信方法、及びプログラム
JP7180141B2 (ja) 遠隔管理システムおよび情報処理方法
JP2015106272A (ja) Webサービスシステム、Webサービスメッセージ仲介方法およびプロキシサーバ
JP2012216011A (ja) 資源配付システム
JP5136125B2 (ja) ソフトウェアサービス事業移管システム及びその移管仲介用サーバ装置
JP6733417B2 (ja) 情報処理装置、情報処理システム、情報処理方法及び情報処理プログラム
JP2014021590A (ja) 設備管理システム、およびこれに利用するクライアント端末、センタサーバ、ならびに設備管理方法
JP2014216812A (ja) スイッチリソース制御システム及びスイッチリソース制御方法
JP2010072894A (ja) 情報配信システム
JP2010176472A (ja) サービス提供システム、サービス提供方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180223

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190110

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190307

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190409

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190531

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: 20190618

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190717

R151 Written notification of patent or utility model registration

Ref document number: 6559587

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151