JP5962676B2 - 情報処理装置、情報処理方法及びプログラム - Google Patents

情報処理装置、情報処理方法及びプログラム Download PDF

Info

Publication number
JP5962676B2
JP5962676B2 JP2013558589A JP2013558589A JP5962676B2 JP 5962676 B2 JP5962676 B2 JP 5962676B2 JP 2013558589 A JP2013558589 A JP 2013558589A JP 2013558589 A JP2013558589 A JP 2013558589A JP 5962676 B2 JP5962676 B2 JP 5962676B2
Authority
JP
Japan
Prior art keywords
server
notification
message
unit
information
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.)
Expired - Fee Related
Application number
JP2013558589A
Other languages
English (en)
Other versions
JPWO2013121487A1 (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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Publication of JPWO2013121487A1 publication Critical patent/JPWO2013121487A1/ja
Application granted granted Critical
Publication of JP5962676B2 publication Critical patent/JP5962676B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/212Monitoring or handling of messages using filtering or selective blocking

Landscapes

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

Description

本技術は、ネットワークを介して複数のデバイスと通信可能な情報処理装置に関する。
従来から、NAT(Network Address Translation)ルータやプロキシサーバ/ファイアーウォールのために直接は通信できないデバイス間で、自由な通信を行わせるための技術として、XMPP(Extensible Messaging and Presence Protocol)と呼ばれるメッセージングプロトコルがある。すなわち、当該XMPPを用いたサーバがクラウド上に配置され、デバイス間の全ての通信をこのサーバが仲介することで、各デバイスはNATルータやプロキシサーバ/ファイアーウォールの影響を受けずに互いに通信を行うことが可能となる。XMPPに関連した文献としては、例えば以下の特許文献1がある。
特開2007−318185号公報
しかしながら、上記XMPPを用いた手法では、XML(Extensible Markup Language)をベースとしたプロトコルが用いられるため、サーバは、全てのクライアントと常時接続した上でXMLのパース等の複雑な処理を行う必要がある。したがってこの手法では、1台のサーバで扱うことのできるクライアントの数が十分でない。
以上のような事情に鑑み、本技術の目的は、クラウド側のシステムの負荷を軽減し、1台で膨大な数のデバイスを扱うことが可能な情報処理装置、情報処理方法及びプログラムを提供することにある。
上述の課題を解決するため、本技術の一形態に係る情報処理装置は、通信部と制御部とを有する。上記通信部は、第1の機器、第2の機器、並びに上記第2の機器とネットワークを介して常時接続される常時接続サーバとの間で、上記ネットワークを介して必要に応じて接続して通信可能である。上記制御部は、上記第1の機器から、上記第2の機器宛のデータを受信し、当該データの存在を通知する通知メッセージを上記第2の機器へ送信するように要求する通知要求情報を上記常時接続サーバへ送信し、上記通知メッセージを受信した第2の機器からの要求に応じて、上記データを当該第2の機器へ送信するように、上記通信部を制御可能である。
本技術では、情報処理装置は、第1の機器から第2の機器宛のデータを受信した場合には、常時接続サーバを介して第2の機器へ通知メッセージを送信し、第2の機器からのアクセスに応じてデータを送信できる。したがって情報処理装置は、常時接続サーバに、第1の機器及び第2の機器との接続の維持及びデータの存在の通知を代行させることで、自身の負荷を軽減することができる。また常時接続サーバは、複雑な処理を必要とせず、通信バッファも最小限で済むため、極めて多数の第1の機器及び第2の機器と接続することが可能となる。この結果、1台の情報処理装置が間接的に扱うことができる機器の数が大幅に増加する。
ここで上記データには、例えば動画、静止画、音声、テキスト、メッセージ、プログラム等、あらゆるデータが含まれる。また上記情報処理装置は、典型的にはサーバ装置であるが、それに限られるものではなく、他のあらゆる機器であり得る。
当該情報処理装置は記憶部をさらに有してもよい。また上記第2の機器は、通信中継装置を介して当該情報処理装置及び上記常時接続サーバと通信してもよい。この場合上記制御部は、上記通信中継装置が、当該情報処理装置からの通信を第2の機器へ転送するように設定されている場合には、当該転送設定に関する情報を記憶するように上記記憶部を制御してもよい。また制御部は、上記記憶された情報を用いて、上記通知要求情報の送信に代えて、または、上記通知要求情報の送信に加えて、上記通知メッセージを上記第2の機器へ直接送信するように上記通信部を制御してもよい。
これにより情報処理装置は、第2の機器側の通信中継装置(ルータ)がUPnP IGD(Universal Plug and Play Internet Gateway Device)プロトコルによるNAT Traversal機構をサポートしている場合には、いわゆるNAT超えにより、第2の機器へ直接通知メッセージを送信することもできる。
上記制御部は、上記第2の機器にグローバルIPアドレスが割り当てられている場合には、上記通知要求情報の送信に代えて、または、上記通知要求情報の送信に加えて、上記通知メッセージを上記第2の機器へ直接送信するように上記通信部を制御してもよい。
これにより情報処理装置は、第2の機器が通信中継装置を介さずにアクセス可能な場合には、第2の機器へ直接通知メッセージを送信することもできる。
当該情報処理装置及び上記常時接続サーバはそれぞれ複数存在してもよい。この場合上記第1の機器及び上記第2の機器は、それぞれ1つの上記情報処理装置及び上記常時接続サーバと通信するよう、当該第1の機器、上記第2の機器、上記複数の情報処理装置、上記複数の常時接続サーバをそれぞれ一意に識別する機器識別情報を用いて対応付けられていてもよい。この場合上記制御部は、上記機器識別情報を基に、上記第2の機器が他の情報処理装置と対応付けられていると判断した場合には、上記データを当該他の情報処理装置へ転送するように上記通信部を制御してもよい。
これにより、情報処理装置及び常時接続サーバが複数存在することで、より膨大な数の機器の通信がサポートされる。
上記情報処理装置は、記憶部をさらに有してもよい。この場合上記制御部は、上記第1の機器及び上記第2の機器のそれぞれの機器識別情報を基に所定のハッシュ関数から得られるハッシュ値に基づいた値と、当該複数の情報処理装置のそれぞれの識別情報との対応関係を定めたテーブルを作成してもよい。また制御部は、上記作成されたテーブルを記憶するように上記記憶部を制御してもよく、上記記憶されたテーブルを基に、上記第2の機器に対応する他の情報処理装置を決定してもよい。
これにより情報処理装置は、上記テーブルを用いることで、第2の機器に対応する他の情報処理装置を容易に決定することができる。
上記制御部は、上記第1の機器及び上記第2の機器にそれぞれを所有するユーザを一意に識別するユーザ識別情報が設定されている場合には、上記機器識別情報に代えて上記ユーザ識別情報を用いて上記テーブルを作成してもよい。
これにより、機器の識別情報が異なっていても、同一のユーザによって所有される機器は同一の情報処理装置に接続されることになるため、複数の情報処理装置間の通信が削減され、クラウド側の負荷が低減する。
本技術の他の形態に係る情報処理装置は、通信部と制御部とを有する。上記通信部は、第1の機器及び第2の機器とネットワークを介して常時接続して通信可能である。また通信部は、上記第1の機器と上記第2の機器との間のデータの送受信を上記ネットワーク上で仲介する仲介サーバと必要に応じて接続して通信可能である。上記制御部は、上記第1の機器から送信された上記第2の機器宛のデータが上記仲介サーバにより受信された場合に、当該仲介サーバから、当該データの存在を通知する通知メッセージを上記第2の機器へ送信するように要求する通知要求情報を受信し、当該通知要求情報に基づいて、上記通知メッセージを上記第2の機器へ送信するように、上記通信部を制御可能である。
これにより情報処理装置は、1台の仲介サーバが間接的に扱うことができる機器の数を大幅に増加させ、仲介サーバの負荷を軽減することができる。
本技術の他の形態に係る情報処理装置は、通信部と制御部とを有する。上記通信部は、ネットワーク上の第1のサーバと必要に応じて接続して通信可能であり、上記ネットワーク上の第2のサーバと常時接続して通信可能である。上記制御部は、他の情報処理装置から送信されたデータの存在を通知する通知メッセージを上記第2のサーバから受信し、当該受信された通知メッセージを基に、上記データを上記第1のサーバから受信するように上記通信部を制御可能である。
本技術の他の形態に係る情報処理方法は、第1の機器とネットワークを介して接続を確立して当該第1の機器から第2の機器宛のデータを受信することを含む。当該方法では、上記データの存在を通知する通知メッセージを当該第2の機器へ送信するように要求する通知要求情報が、上記第2の機器と常時接続されたサーバへ送信される。そして、上記通知メッセージを受信した上記第2の機器からの要求に応じて接続が確立されて当該第2の機器へ上記データが送信される。
本技術のまた別の形態に係るプログラムは、情報処理装置に、受信ステップと、第1の送信ステップと、第2の送信ステップとを実行させる。上記受信ステップでは、第1の機器とネットワークを介して接続が確立されて当該第1の機器から第2の機器宛のデータが受信される。上記第1の送信ステップでは、上記データの存在を通知する通知メッセージを当該第2の機器へ送信するように要求する通知要求情報が、上記第2の機器と常時接続された常時接続サーバへ送信される。上記第2の送信ステップでは、上記通知メッセージを受信した上記第2の機器からの要求に応じて当該第2の機器と接続が確立されて当該第2の機器へ上記データが送信される。
以上のように、本技術によれば、クラウド側のシステムの負荷を軽減し、1台で膨大な数のデバイスを扱うことができる。
本技術の第1の実施形態におけるシステムのネットワーク構成を示した図である。 上記システムにおけるメッセージングサーバのハードウェア構成を示したブロック図である。 上記システムにおけるデバイスのハードウェア構成を示したブロック図である。 上記システムにおける各ノードのソフトウェアモジュール構成を示したブロック図である。 上記メッセージングサーバが有する通知手段リストの例を示した図である。 上記メッセージングサーバが有する接続情報リストの例を示した図である。 通知手段が通知サーバである場合の、デバイス間のデータ送信処理の流れを模式的に示した図である。 通知手段がGlobal IPである場合の、デバイス間のデータ送信処理の流れを模式的に示した図である。 通知手段がUPnP IGDである場合の、デバイス間のデータ送信処理の流れを模式的に示した図である。 通知手段がUser Settingである場合の、デバイス間のデータ送信処理の流れを模式的に示した図である。 データの送信元であるデバイスのメッセージ送信部の動作の流れを示したフローチャートである。 データの宛先となるデバイスの通知手段設定部の動作の流れを示したフローチャートである。 データの宛先となるデバイスの通知サーバ通知受信部の動作の流れを示したフローチャートである。 データの宛先となるデバイスの直接通知受信部の動作の流れを示したフローチャートである。 データの宛先となるデバイスのメッセージ受信部の動作の流れを示したフローチャートである。 通知サーバの接続処理部の動作の流れを示したフローチャートである。 通知サーバの接続管理部の動作の流れを示したフローチャートである。 メッセージングサーバの接続処理部の動作の流れを示したフローチャートである。 メッセージングサーバの接続管理部の動作の流れを示したフローチャートである。 メッセージングサーバのメッセージ送信部の動作の流れを示したフローチャートである。 本技術の第2の実施形態におけるシステムのネットワーク構成を示した図である。 本技術の第2の実施形態における上記システムにおける各ノードのソフトウェアモジュール構成を示した図である。 本技術の第2の実施形態における、デバイスに対応するサーバの決定処理の流れを示したフローチャートである。 本技術の第2の実施形態において作成されるメッセージングサーバ割り当てテーブルの例を示した図である。 本技術の第2の実施形態において作成される通知サーバ割り当てテーブルの例を示した図である。 本技術の第2の実施形態において作成される、メッセージングサーバのネットワークアドレス決定用のレゾリューションテーブルの例を示した図である。 本技術の第2の実施形態において作成される、通知サーバのネットワークアドレス決定用のレゾリューションテーブルの例を示した図である。 本技術の第2の実施形態におけるデバイス間のデータ送信処理の流れを模式的に示した図である。 本技術の第2の実施形態におけるメッセージングサーバの接続処理部の動作の流れを示したフローチャートである。 本技術の第2の実施形態におけるメッセージングサーバの接続管理部の動作の流れを示したフローチャートである。 本技術の第2の実施形態におけるメッセージングサーバのメッセージ転送部の動作の流れを示したフローチャートである。 本技術の第3の実施形態におけるシステムのネットワーク構成を示した図である。 本技術の第3の実施形態におけるメッセージングサーバの接続管理部の動作の流れを示したフローチャートである。
以下、本技術に係る実施形態を、図面を参照しながら説明する。
<第1の実施形態>
まず、本技術の第1の実施形態を説明する。
[システムのネットワーク構成]
図1は、本実施形態に係るシステムのネットワーク構成を示した図である。
同図に示すように、このシステムは、クラウド上のメッセージングサーバ100及び通知サーバ200と、それらサーバとWAN(Wide Area Network)を介して接続可能な複数のデバイス300とを有する。
本実施形態では、メッセージングサーバ100及び通知サーバ200はクラウド上にそれぞれ1台ずつ設けられる。
デバイス300は、例えばスマートフォン、携帯電話機、タブレットPC(Personal Computer)、デスクトップPC、ノートブックPC、PDA(Personal Digital Assistant)、携帯型AVプレイヤー、電子ブック、デジタルスチルカメラ、カムコーダ、テレビジョン装置、PVR(Personal Video Recorder)、ゲーム機器、カーナビゲーションシステム、デジタルフォトフレーム等、あらゆる情報処理装置であり得る。同図では、デバイス300Aとデバイス300Bの2台のみが示されているが、デバイス300の数は3台以上であっても構わない。
各デバイス300は、通信中継装置310を介して上記メッセージングサーバ100及び通知サーバ200と通信する場合もあるし、通信中継装置310を介さずに直接それらのサーバと通信する場合もある。
各デバイス300は、通知サーバ200とは常時接続により通信可能である一方、メッセージングサーバ100とは必要に応じて接続を確立して通信する。メッセージングサーバ100は、通知サーバ200及び各デバイス300と、必要に応じて接続を確立して通信する。
通信中継装置310とは、内側(デバイス300側)のネットワークと外部(クラウド側)のネットワークとの間の通信を中継する機能を持ち、両ネットワークにおいて利用されるアドレスの相違や、セキュリティを保護する機構のために、外部のサーバが、特別な手段を用いない限り、内部の特定のデバイスを指定して接続することを不可能にしているものをいう。このような通信中継装置310としては、例えばNATルータやプロキシサーバまたはファイアーウォールが挙げられる。
詳細は後述するが、メッセージングサーバ100は、デバイス300間の通信(例えばメッセージの送受信)を仲介するサーバとして機能する。また通知サーバ200は、あるデバイス300から送信されたデータ(メッセージ)が存在する旨の通知メッセージを、当該データの宛先のデバイス300へ送信するための通知手段の1つとして機能する。他の通知手段については後述する。
以降の説明では、メッセージングサーバ100、通知サーバ200及びデバイス300をまとめて「ノード」と称する場合もある。
[メッセージングサーバのハードウェア構成]
図2は、上記メッセージングサーバ100のハードウェア構成を示した図である。同図に示すように、メッセージングサーバ100は、CPU(Central Processing Unit)11、ROM(Read Only Memory)12、RAM(Random Access Memory)13、入出力インタフェース15、及び、これらを互いに接続するバス14を備える。
CPU11は、必要に応じてRAM13等に適宜アクセスし、各種演算処理を行いながらメッセージングサーバ100の各ブロック全体を統括的に制御する。ROM12は、CPU11に実行させるOS、プログラムや各種パラメータなどのファームウェアが固定的に記憶されている不揮発性のメモリである。RAM13は、CPU11の作業用領域等として用いられ、OS、実行中の各種アプリケーション、処理中の各種データを一時的に保持する。
入出力インタフェース15には、表示部16、操作受付部17、記憶部18、通信部19等が接続される。
表示部16は、例えばLCD(Liquid Crystal Display)、OELD(Organic ElectroLuminescence Display)、CRT(Cathode Ray Tube)等を用いた表示デバイスである。
操作受付部17は、例えばマウス等のポインティングデバイス、キーボード、タッチパネル、その他の入力装置である。操作受付部17がタッチパネルである場合、そのタッチパネルは表示部16と一体となり得る。
記憶部18は、例えばHDD(Hard Disk Drive)や、フラッシュメモリ(SSD;Solid State Drive)、その他の固体メモリ等の不揮発性メモリである。当該記憶部18には、上記OSや各種アプリケーション、各種データが記憶される。特に本実施形態において、記憶部18には、後述する複数のソフトウェアモジュール等のプログラムや、通知手段リスト、接続情報リスト等のデータベースが記憶される。
通信部19は、WAN50に接続するためのNIC等であり、通知サーバ200やデバイス300との間の通信処理を担う。
[通知サーバのハードウェア構成]
上記通知サーバ200のハードウェア構成も、上記メッセージングサーバのハードウェア構成と同様であるため、説明を省略する。本実施形態では、通知サーバ200において、上記メッセージングサーバ100のCPU11、記憶部18、通信部19と対応するハードウェアをそれぞれCPU21、記憶部28、通信部29と称する。
記憶部28には、後述する複数のソフトウェアモジュール等のプログラムや、接続情報リスト等のデータベースが記憶される。
[デバイスのハードウェア構成]
図3は、上記デバイス300のハードウェア構成を示した図である。同図に示すように、デバイス300のハードウェア構成も、上記サーバ100のハードウェア構成と基本的に同様である。すなわち、デバイス300は、CPU31、ROM32、RAM33、入出力インタフェース35、及び、これらを互いに接続するバス34、表示部36、操作受付部37、記憶部38、通信部39を備える。
ここで表示部36は、デバイス300に内蔵されていてもよいし、デバイス300に外部接続されていてもよい。
記憶部38には、後述する複数のソフトウェアモジュール等のプログラムや、各種データベースが記憶される。
[各機器のモジュール構成]
図4は、上記メッセージングサーバ100、通知サーバ200及びデバイス300がそれぞれ有するソフトウェアモジュールの構成を示した図である。
(メッセージングサーバのモジュール構成)
同図に示すように、メッセージングサーバ100は、接続処理部101、接続管理部102、メッセージ処理部105及びメッセージ送信部106の各ソフトウェアモジュールと、通知手段リスト103及び接続情報リスト104の各データベースとを有する。
接続処理部101は、デバイス300からの接続要求を受け、デバイス300と接続を確立する。
接続管理部102は、通知サーバ200及びデバイス300との全ての接続を管理し、受け取ったメッセージを処理、送信、または転送する。
メッセージ処理部105は、受信したメッセージングサーバ100宛のメッセージを処理する。
メッセージ送信部106は、メッセージングサーバ100が担当するデバイス300へメッセージを送信する。
通知手段リスト103は、デバイス300へメッセージの存在を通知する通知手段に関する情報のリストである。図5に、当該通知手段リストの例を示す。
後述するが、各デバイス300は、実際の通信に先立ち、メッセージングサーバ100と通信を行って、メッセージングサーバ100が各デバイス宛のメッセージを受け取った場合に、どのような手段を用いて通知してもらいたいかを登録しておく。
同図に示すように、通知手段リストには、ノードID(デバイスであればデバイスID、サーバであればサーバID)、通知手段及び関連情報の各項目が記載される。
ノードIDは、メッセージングサーバ100、通知サーバ200及び各デバイス300を一意に識別する例えば128ビットのIDである。
デバイスIDは、全てのデバイス300毎にユニークなIDとなるように、通常はWLAN/Ethernet(登録商標)におけるMACアドレスや、携帯電話のIMEIなど、各デバイス300のハードウェアに予め埋め込まれた情報を元に生成される。しかし、当該デバイスIDは、一意性が保証されるのであれば、どのような形で割り当てられてもよい。
サーバIDは、クラウド上のメッセージングサーバ100及び通知サーバ200を一意に指定するためのIDで、通常は、障害対策時にサーバを置き換えるなどの目的から、起動時に指定したIDなどが用いられるが、上記デバイスIDと同様にどのような形で設定されてもよい。
当該ノードIDは、例えば、上位ビットでIDのタイプ、下位ビットで各ノード固有のIDを表す。IDのタイプとは、例えばデバイスIDであれば「0300」、メッセージングサーバ100のサーバIDであれば「0400」、通知サーバ200のサーバIDであれば「0401」等である。
具体的には、デバイスIDは例えば「03000000-0000-0000-0000-0000c293975d」といったものであり、サーバIDは例えば「04010000-0000-0000-0000-000000000123」といったものである。同図の例では1つのデバイスIDに関する複数の通知手段のエントリが示されているが、実際には、異なるIDを有するノード(メッセージングサーバ100、通知サーバ200及び複数のデバイス300)についてそれぞれ通知手段のエントリが記載される。
本実施形態では、通知手段として、「Global IP」、「UPnP IGD」、「User Setting」及び「Server」の4つが存在する。上記通知サーバ200は、上記通信中継装置310により、外部(メッセージングサーバ100)からの直接の通信が行えない場合のために設けられるものである。したがって、通信中継装置310が存在しない場合や、通信中継装置310に特別な設定が可能である場合には、メッセージングサーバ100は、通知サーバ200によらずに通知処理を実行可能である。
「Global IP」は、デバイス300(例えばモバイルデバイス)にグローバルIPアドレスが割り振られており、メッセージングサーバ100からデバイス300に、通信中継装置310を介さずに直接接続可能であることを示す。このエントリでは、関連情報として、ノードIDに対応するノードのグローバルIPアドレス及びポート番号が記載される。
「UPnP IGD」は、通信中継装置310が、それに接続されたローカル側のノードからの指示により、外部からの通信を内部の特定のノードへ転送する設定が可能とされており、メッセージングサーバ100から通信中継装置310を経由してデバイス300へ接続可能であることを示す。これは具体的には、通信中継装置310としてのNATルータが、UPnP IGDプロトコルによるNAT Traversal機構をサポートしている場合である。この場合、内部のデバイス300が、メッセージングサーバ100と共同してWAN50側のポート番号とLAN側のポート番号とを決定して、当該WAN50側のポート番号への通信を、当該LAN側のIPアドレス/ポート番号へ転送するように、NATルータに設定する。メッセージングサーバ100は、当該WAN側のIPアドレス及びポート番号を、通知手段リスト上で関連情報として記憶しておき、デバイス300と通信する際には、当該記憶されたIPアドレス及びポート番号を用いる。
「User Setting」は、「UPnP IGD」と同様の転送設定が、デバイス300からの指示ではなく、ポートフォワーディング機構を用いて、ユーザが手動で変更することにより可能とされていることを示す。この場合も、設定されたIPアドレス及びポート番号は関連情報として記憶される。
「Server」は、メッセージングサーバ100が通知サーバ200を経由して各デバイス300へ接続可能であることを示す。各デバイス300が上記NAT Traversal機構等をサポートしない通常の通信中継装置310を経由してクラウド側と接続される場合は、当該通知手段が用いられる。
この通知手段リストは、同一デバイスの情報が複数のエントリとして存在することもある。例えば、デバイス300がスマートフォン等の携帯端末であって、それが携帯電話のネットワークにも、Wireless LANにも接続されている場合などである。また、実際の運用時においては、当該リストの各エントリに有効期限が設けられてもよい。
接続情報リスト104は、メッセージングサーバ100が、その時点で保持している接続に関する情報を記したリストである。図6にその一例を示す。同図に示すように、接続情報リスト104は、メッセージングサーバ100が接続中の通知サーバ200またはデバイス300について、それらのノードID、IPアドレス及びソケット番号の各項目が記載される。当該接続情報リスト104では、通知サーバ200またはデバイス300との接続が確立されるたびに該当するエントリが追加され、接続が解除された場合には、該当するエントリが削除される。
(通知サーバのモジュール構成)
図4に示すように、通知サーバ200は、接続処理部201及び接続管理部202の各ソフトウェアモジュールと、データベースとしての接続情報リスト203とを有する。
接続処理部201は、デバイス300からの接続要求を受け接続を確立する。
接続管理部202は、メッセージングサーバ100及びデバイス300との全ての接続を管理し、メッセージングサーバ100から通知要求があった場合には、対応するデバイス300に通知メッセージを送信する。
接続情報リスト203は、通知サーバ200が、その時点で保持している接続に関する情報を記したリストであり、その構成は上記メッセージングサーバ100が有する接続情報リスト104と同様である。
(デバイスのモジュール構成)
図4に示すように、各デバイス300は、通知手段設定部301、通知サーバ通知受信部302、直接通知受信部303、メッセージ受信部304、メッセージ送信部305及びメッセージ処理部306の各ソフトウェアモジュールを有する。
通知手段設定部301は、メッセージングサーバ100に、デバイス300が利用可能な通知手段を設定する。
通知サーバ通知受信部302は、通知サーバ200と接続して、通知メッセージを受信する。
直接通知受信部303は、通知サーバ200を介さずに、メッセージングサーバ100から直接、通知メッセージを受信する。
メッセージ受信部304は、メッセージングサーバ100と接続して、他のデバイス300から送信されたデータ(メッセージ)を受信する。
メッセージ送信部305は、メッセージングサーバ100と接続して、他のデバイス宛のデータ(メッセージ)を送信する。
メッセージ処理部306は、メッセージングサーバ100から受信したデータ(メッセージ)を処理する。
メッセージ送信側のデバイス300Aは、最低限、メッセージ送信部305を有していればよいため、同図では、その他のモジュールブロックを破線で示している。しかし、もちろん、送信側のデバイス300Aは、受信側のデバイス300Bと同様にそれらのモジュールを有していてもよい。同様に、同図ではメッセージ受信側のデバイス300Bにおいて、メッセージ送信部305が破線で示されているが、当該デバイス300Bもメッセージ送信部305を有していてもよい。
[システムの動作]
次に、以上のように構成されたシステムにおけるメッセージングサーバ100、通知サーバ200及びデバイス300の動作について、デバイス300間のデータ(メッセージ)送信処理を中心に説明する。本実施形態及び他の実施形態において、システムを構成する各ノードにおける動作は、CPUと、その制御下において実行される上記各ソフトウェアモジュールとで協働して行われる。
データ(メッセージ)の送信処理に先立って、メッセージングサーバ100及び通知サーバ200は、初期設定情報として、通知サーバID、メッセージングサーバID及びそれらに対応するネットワークアドレス(ホスト名またはIPアドレス/ポート番号)等を予め各デバイス300へ通知しておく。
(データ送信処理例:通知手段が通知サーバである場合)
まず、通知手段が通知サーバ200である場合の、デバイス300間のデータ(メッセージ)送信処理の流れを説明する。図7はこの場合のデバイス300Aからデバイス300Bへのデータ送信処理の流れの概要を模式的に示した図である。
同図に示すように、まず、メッセージ受信側(宛先)のデバイス300Bが、クラウド側との通信環境を確認した上で、通信中継装置310Bを介して通知サーバ200と接続する(同図(1))。当該接続は常時維持される。
続いて、デバイス300Bは、通信中継装置310Bを介してメッセージングサーバ100と接続して、通知手段として通知サーバ200を設定する(通知手段設定情報を送信する)(同図(2))。
続いて、メッセージ送信元のデバイス300Aが、デバイス300B宛のメッセージをメッセージングサーバ100へ送信する(同図(3))。
続いて、メッセージを受信したメッセージングサーバ100は、通知サーバ200に対して、デバイス300Aからデバイス300B宛のメッセージの存在を通知する通知メッセージの送信要求(通知要求)を送信する(同図(4))。
続いて、上記通知要求を受信した通知サーバ200は、既に確立しているデバイス300Bとの接続を用いて、デバイス300Bに上記通知メッセージを送信する(同図(5))。
そして、上記通知メッセージを受信したデバイス300Bが、通信中継装置310Bを介してメッセージングサーバ100と接続を確立して、上記デバイス300Aからのメッセージを受信する(同図(6))。
(データ送信処理例:通知手段がGlobal IPである場合)
次に、通知手段がGlobal IPである場合の、デバイス300間のデータ(メッセージ)送信処理の流れを説明する。図8はこの場合のデバイス300Aからデバイス300Bへのデータ送信処理の流れの概要を模式的に示した図である。
同図に示すように、まず、メッセージ受信側(宛先)のデバイス300Bが、クラウド側との通信環境を確認する(同図(1))。
続いて、デバイス300Bは、クラウド側と直接通信が可能であることを確認すると、メッセージングサーバ100と接続して、通知手段としてGlobal IPを設定する(同図(2))。
続いて、メッセージ送信元のデバイス300Aが、デバイス300B宛のメッセージをメッセージングサーバ100へ送信する(同図(3))。
続いて、メッセージを受信したメッセージングサーバ100は、デバイス300Bと接続を確立して、上記通知メッセージを直接、デバイス300Bへ送信する(同図(4))。
そして、上記通知メッセージを受信したデバイス300Bが、メッセージングサーバ100と接続を確立して、上記デバイス300Aからのメッセージを受信する(同図(5))。
(データ送信処理例:通知手段がUPnP IGDである場合)
次に、通知手段がUPnP IGDである場合の、デバイス300間のデータ(メッセージ)送信処理の流れを説明する。図9はこの場合のデバイス300Aからデバイス300Bへのデータ送信処理の流れの概要を模式的に示した図である。
同図に示すように、まず、メッセージ受信側(宛先)のデバイス300Bが、クラウド側との通信環境を確認した上で、UPnP IGDによるNAT Traversal機構を用いて、通信中継装置310B(ルータ)に対して、クラウド側からの通信をデバイス300Bに転送するように設定する(同図(1))。
続いて、デバイス300Bは、通信中継装置310Bを介してメッセージングサーバ100と接続して、通知手段としてUPnP IGDを設定する(同図(2))。
続いて、メッセージ送信元のデバイス300Aが、デバイス300B宛のメッセージをメッセージングサーバ100へ送信する(同図(3))。
続いて、メッセージを受信したメッセージングサーバ100は、上記UPnP IGDの設定を元に、デバイス300Bと接続を確立して、上記通知メッセージを通信中継装置310Bを介してデバイス300Bへ送信する(同図(4))。
そして、上記通知メッセージを受信したデバイス300Bが、上記UPnP IGDの設定を元に、メッセージングサーバ100と接続を確立して、通信中継装置310Bを介して上記デバイス300Aからのメッセージを受信する(同図(5))。
(データ送信処理例:通知手段がUser Settingである場合)
次に、通知手段がUser Settingである場合の、デバイス300間のデータ(メッセージ)送信処理の流れを説明する。図10はこの場合のデバイス300Aからデバイス300Bへのデータ送信処理の流れの概要を模式的に示した図である。
同図に示すように、まず、メッセージ受信側(宛先)のデバイス300Bのユーザが、クラウド側との通信環境を確認した上で、ポートフォワーディング機構を用いて、通信中継装置310B(ルータ)に対して、クラウド側からの通信をデバイス300Bに転送するように手動で設定する(同図(1))。
続いて、デバイス300Bは、通信中継装置310Bを介してメッセージングサーバ100と接続して、通知手段としてUser Settingを設定する(同図(2))。
続いて、メッセージ送信元のデバイス300Aが、デバイス300B宛のメッセージをメッセージングサーバ100へ送信する(同図(3))。
続いて、メッセージを受信したメッセージングサーバ100は、上記ポートフォワーディング機構による設定を元に、デバイス300Bと接続を確立して、通信中継装置310Bを介して上記通知メッセージをデバイス300Bへ送信する(同図(4))。
そして、上記通知メッセージを受信したデバイス300Bが、上記ポートフォワーディング機構による設定を元に、メッセージングサーバ100と接続を確立して、通信中継装置310Bを介して上記デバイス300Aからのメッセージを受信する(同図(5))。
(デバイスの動作)
次に、上述の送信処理におけるデバイス300の動作について説明する。
図11は、メッセージの送信元であるデバイス300Aの上記メッセージ送信部305の動作の流れを示したフローチャートである。
同図に示すように、メッセージ送信部305はまず、デバイス300AのノードID(デバイスID)から、対応するメッセージングサーバ100を判定する(ステップ111)。上述のように、本実施形態では、メッセージングサーバ100は1台のみであり、各デバイス300には、そのサーバID及びネットワークアドレスが予め知らされているため、メッセージ送信部305は当該情報によりメッセージングサーバ100を特定する。
続いてメッセージ送信部305は、通信中継装置310Aを介して、メッセージングサーバ100と接続を確立する(ステップ112)。
続いてメッセージ送信部305は、デバイス300B宛のメッセージをメッセージングサーバ100へ送信する(ステップ113)。
そしてメッセージ送信部305は、メッセージの送信が完了すると、メッセージングサーバ100との接続を解除する(ステップ114)。
図12は、データ(メッセージ)の宛先となるデバイス300Bの上記通知手段設定部301の動作の流れを示したフローチャートである。
同図に示すように、通知手段設定部301はまず、デバイス300BのノードID(デバイスID)から、対応するメッセージングサーバ100を決定する(ステップ121)。上述のように、本実施形態では、デバイス300Bにも、メッセージングサーバ100のサーバID及びネットワークアドレスが予め知らされているため、通知手段設定部301は当該情報によりメッセージングサーバ100を特定する。
続いて通知手段設定部301は、通信中継装置310Bを介して、メッセージングサーバ100と接続を確立する(ステップ122)。
続いて通知手段設定部301は、メッセージングサーバ100に、上述した4つのうち少なくとも1つの通知手段を特定した通知手段設定情報を送信する(ステップ123)。
そして通知手段設定部301は、通知手段設定情報の送信が完了すると、メッセージングサーバ100との接続を解除する(ステップ124)。
図13は、デバイス300Bの上記通知サーバ通知受信部302の動作の流れを示したフローチャートである。上述のように、この動作は通知手段が通知サーバ200に設定されている場合に行われる。
同図に示すように、通知サーバ通知受信部302はまず、デバイス300BのノードID(デバイスID)から、対応する通知サーバ200を決定する(ステップ131)。上述のように、本実施形態では、通知サーバ200は1台のみであり、各デバイス300には、そのサーバID及びネットワークアドレスが予め知らされているため、通知サーバ通知受信部302は当該情報により通知サーバ200を特定する。
続いて通知サーバ通知受信部302は、通信中継装置310Bを介して、通知サーバ200と接続を確立する(ステップ132)。
続いて通知サーバ通知受信部302は、デバイス300BのノードID(デバイスID)を通知サーバ200へ通知する(ステップ133)。
続いて通知サーバ通知受信部302は、メッセージングサーバ100からの通知要求を受けた通知サーバ200から、通知メッセージを受信する(ステップ134)。
続いて、通知メッセージを受信した通知サーバ通知受信部302は、その時点でメッセージングサーバ100との接続が確立されているか否かを判断する(ステップ135)。
メッセージングサーバ100との接続が確立されていないと判断した場合(Yes)には、通知サーバ通知受信部302は、メッセージ受信部304に、メッセージングサーバ100との接続を要求する(ステップ136)。
通知サーバ通知受信部302は、上記ステップ134〜136の処理を、通知メッセージを受信するたびに繰り返す。
図14は、デバイス300Bの上記直接通知受信部303の動作の流れを示したフローチャートである。上述のように、この動作は、通知手段が通知サーバ200以外に設定されている場合に行われる。
同図に示すように、直接通知受信部303はまず、メッセージングサーバ100から送信される通知メッセージの受信待ち処理する(ステップ141)。
続いて直接通知受信部303は、メッセージングサーバ100から通知メッセージを受信する(ステップ142)。
続いて、通知メッセージを受信した直接通知受信部303は、その時点でメッセージングサーバ100との接続が確立されているか否かを判断する(ステップ143)。
メッセージングサーバ100との接続が確立されていないと判断した場合(Yes)には、直接通知受信部303は、メッセージ受信部304に、メッセージングサーバ100との接続を要求する(ステップ144)。
直接通知受信部303は、上記ステップ142〜144の処理を、通知メッセージを受信するたびに繰り返す。
図15は、デバイス300Bの上記メッセージ受信部304及びメッセージ処理部306の動作の流れを示したフローチャートである。
同図に示すように、メッセージ受信部304はまず、上述と同様に、デバイス300BのノードID(デバイスID)から、対応するメッセージングサーバ100を判定する(ステップ151)。
続いてメッセージ受信部304は、通信中継装置310Bを介して、(通知手段がGlobal IPの場合は、通信中継装置310Bを介さずに直接)メッセージングサーバ100と接続を確立する(ステップ152)。
続いてメッセージ受信部304は、デバイス300BのノードID(デバイスID)をメッセージングサーバ100へ通知する(ステップ153)。
続いてメッセージ受信部304はメッセージングサーバ100からのメッセージの受信、タイムアウト、エラーまたは通信切断の何れかを待つ(ステップ154)。
メッセージを受信した場合(ステップ155のYes)、メッセージ処理部306は、受信したメッセージを処理する(ステップ156)。
メッセージを受信しないままタイムアウトし、またはエラーが発生した場合(ステップ157のYes)には、メッセージ受信部304は、メッセージングサーバ100との接続を解除する(ステップ158)。
メッセージ受信部304及びメッセージ処理部306は、上記ステップ154〜158の処理を、メッセージングサーバ100との接続確立のたびに繰り返す。
(通知サーバの動作)
次に、上述の送信処理における通知サーバ200の動作について説明する。
図16は、通知サーバ200の上記接続処理部201の動作の流れを示したフローチャートである。
同図に示すように、接続処理部201はまず、デバイス300またはメッセージングサーバ100からの接続要求を待つ(ステップ161)。
デバイス300またはメッセージングサーバ100からの接続要求があった場合(ステップ162のYes)、接続処理部201は、当該接続要求を受け入れ、接続を確立する(ステップ163)。
続いて接続処理部201は、接続元のデバイス300またはメッセージングサーバ100から、それらのノードID(デバイス300のデバイスIDまたはメッセージングサーバ100のサーバID)を受信する(ステップ164)。
そして接続処理部201は、上記接続情報リスト203に上記ノードID及び接続に関する情報(IPアドレス及びソケット番号)を記録し、それらを新たに接続管理対象に加える(ステップ165)。
図17は、通知サーバ200の上記接続管理部202の動作の流れを示したフローチャートである。
同図に示すように、接続管理部202はまず、上記接続情報リスト203で管理している全ての接続について、メッセージの受信、エラーまたは通信切断の何れかを待つ(ステップ171)。
続いて接続管理部202は、メッセージを受信したか否かを判断する(ステップ172)。
メッセージを受信したと判断した場合(Yes)、接続管理部202は、当該メッセージがメッセージングサーバ100からの通知要求であるか否かを判断する(ステップ173)。
上記メッセージがメッセージングサーバ100からの通知要求であると判断した場合(Yes)、接続管理部202は、受信したメッセージから、通知対象(通知メッセージの送信対象)のデバイス300のデバイスIDを取得する(ステップ174)。
続いて接続管理部202は、上記接続情報リスト203に、上記取得したデバイスIDと合致するエントリが存在するか否かを判断する(ステップ175)。
取得したデバイスIDと合致するエントリが存在すると判断した場合(ステップ176のYes)、接続管理部202は、当該エントリに対応する接続(IPアドレス及びソケット番号)を用いて、対象のデバイス300に通知メッセージを送信する(ステップ177)。
上記ステップ172において、メッセージを受信していないと判断した場合(No)、接続管理部202は、管理対象のいずれかの接続について、エラーの発生または通信切断があったか否かを判断する(ステップ178)。
エラーの発生または通信切断があったと判断した場合(Yes)、接続管理部202は、当該エラーが発生しまたは通信が切断された接続に関するエントリを接続情報リスト203から除外する(ステップ179)。
(メッセージングサーバの動作)
次に、上述の送信処理におけるメッセージングサーバ100の動作について説明する。
図18は、メッセージングサーバ100の上記接続処理部101の動作の流れを示したフローチャートである。
同図に示すように、接続処理部101はまず、デバイス300からの接続要求を待つ(ステップ181)。
デバイス300からの接続要求があった場合(ステップ182のYes)、接続処理部101は、当該デバイス300からの接続要求を受け入れ、接続を確立する(ステップ183)。
続いて接続処理部101は、接続元のデバイス300から、そのデバイスIDを受信する(ステップ184)。
そして接続処理部101は、上記接続情報リスト104に上記デバイスID及び接続に関する情報(IPアドレス及びソケット番号)を記録し、当該デバイス300を新たに接続管理対象に加える(ステップ185)。
図19は、メッセージングサーバ100の上記接続管理部102及び上記メッセージ処理部105の動作の流れを示したフローチャートである。
同図に示すように、接続管理部102はまず、上記接続情報リスト104で管理している全ての接続について、メッセージの受信、エラーまたは通信切断の何れかを待つ(ステップ191)。
続いて接続管理部102は、メッセージを受信したか否かを判断する(ステップ192)。
メッセージを受信したと判断した場合(Yes)、接続管理部102は、当該メッセージから、その送付先に設定されているノードIDを取得する(ステップ193)。
続いて接続管理部102は、取得したノードIDが、メッセージングサーバ100のノードID(サーバID)であるか否かを判断する(ステップ194)。
上記ノードIDがメッセージングサーバ100のノードIDであると判断した場合(Yes)、メッセージ処理部105が上記メッセージを処理する(ステップ195)。
一方、送付先のノードIDがメッセージングサーバ100のノードIDでないと判断した場合(No)、接続管理部102は、送付先に設定されているノードIDから、それに対応するメッセージングサーバのノードIDを判定する(ステップ196)。
上述のように、本実施形態では、メッセージングサーバ100は1台のみであるから、接続管理部102は、送付先に対応するサーバのノードIDは自身(メッセージングサーバ100)のノードIDであると判定する(ステップ197のYes)。
そして接続管理部102は、メッセージ送信部106へ上記メッセージを引き渡す(ステップ198)。
上記ステップ192において、メッセージを受信していないと判断した場合(No)、接続管理部102は、管理対象のいずれかの接続について、エラーの発生または通信切断があったか否かを判断する(ステップ199)。
エラーの発生または通信切断があったと判断した場合(Yes)、接続管理部102は、当該エラーが発生しまたは通信が切断された接続に関するエントリを接続情報リスト104から除外する(ステップ200)。
図20は、メッセージングサーバ100の上記メッセージ送信部106の動作の流れを示したフローチャートである。
同図に示すように、メッセージ送信部106はまず、上記通知手段リスト103から、送付先に設定されているノードIDと合致するエントリを取得する(ステップ201)。
上記通知手段リスト103に、上記ノードIDと合致するエントリが存在しないと判断した場合(ステップ202のYes)は、メッセージ送信部106は、処理を終了する。
上記ノードIDと合致するエントリが存在すると判断した場合(ステップ202のNo)、メッセージ送信部106は、当該エントリの通知手段が、通知サーバ200以外に設定されているか否かを判断する(ステップ203)。
上記通知手段が通知サーバ200以外に設定されていると判断した場合(Yes)、メッセージ送信部106は、当該エントリ上の関連情報に基づいて、メッセージ送付先のデバイス300(300B)と接続を確立する(ステップ204)。
続いてメッセージ送信部106は、上記接続を用いて、上記通知メッセージをデバイス300へ送信する(ステップ205)。
通知メッセージの送信が完了した場合、メッセージ送信部106は、上記デバイス300との接続を解除する(ステップ206)。
一方、上記ステップ203で、通知手段が通知サーバ200に設定されていると判断した場合(No)、メッセージ送信部106は、送付先に設定されているノードIDから、それに対応する通知サーバ200のノードID(サーバID)を判定する(ステップ207)。
続いてメッセージ送信部106は、上記ノートIDを有する通知サーバ200へ、メッセージの送付先に設定されているデバイス300への通知要求を、そのノードID(デバイスID)とともに送信する(ステップ209)。当該送信が完了した場合、メッセージ送信部106は、通知サーバ200との接続を解除する(ステップ210)。
続いてメッセージ送信部106は、メッセージ送付先のデバイス300からの新たな接続またはタイムアウトを待つ(ステップ211)。
当該送付先のノードIDを有するデバイス300がメッセージングサーバ100に接続されたと判断した場合(ステップ212のYes)、メッセージ送信部106は、当該ノードIDに対応する接続を用いて、当該デバイス300へメッセージを送信する(ステップ213)。
一方、通知サーバ200への通知要求を送信してから、所定の時間内に、上記送付先のノードIDを有するデバイス300から接続がない(タイムアウトした)場合(ステップ214のYes)、メッセージ送信部106は、メッセージを破棄する(ステップ215)。
そしてメッセージ送信部106は、上記通知手段リスト103から、上記送付先のノードIDと合致する次のエントリを取得し(ステップ216)、上記ステップ202以降の処理を繰り返す。
[まとめ]
以上説明したように、本実施形態では、クラウド側に、メッセージングサーバ100に加えて、デバイス300への通知手段としての通知サーバ200が設けられることで、各デバイス300は、通信中継装置310が存在する場合でも、クラウド側と常時接続することができる。また、それにより、メッセージングサーバ100の負荷も軽減する。
また、全てのデバイス300がメッセージングサーバ100に常時接続する場合と比較して、通知サーバ200に常時接続した上で、必要なときのみにメッセージングサーバ100に接続することの利点は、後者の方が、1台のサーバに接続できるデバイス300の数を大幅に増やすことができることである。例えば、メッセージングサーバ100が1台でサポート可能なデバイス数が5万台だとすると、通知サーバ200が1台でサポート可能なデバイス数は100万台となる。
メッセージングサーバ100では、行われる処理が複雑な上に、通信の効率の観点から、1つの接続あたりの通信バッファサイズを十分に用意する必要がある。しかし、通知サーバ200では、通知サーバ200は、単にデバイス300へ非常に小さなメッセージ(通知メッセージ)を送付する機能だけ有していればよく、処理も非常にシンプルな上に、通信バッファも最小限で済む。したがって、通知サーバ200が1台あたりに必要なリソースを極限まで最小化することができる。
さらに本実施形態では、他の通知手段として、通信中継装置310に外部からの通信を内部の特定のデバイス300へ転送するように設定可能な場合には、当該機構が用いられることで、クラウド側の負荷がさらに軽減される。UPnP IGD等、通知サーバ200以外の手段は、単独では全てのデバイス300間の通信に適用できない場合もあるが、上記通知サーバ200を前提としたシステムにおいては、システム全体の負荷を軽減するための手段としては有効に機能する。
<第2の実施形態>
次に、本技術の第2の実施形態を説明する。本実施形態において、上記第1の実施形態と同様の構成及び機能を有する箇所には同一の符号を付し、説明を省略する。
[システムのネットワーク構成]
図21は、本実施形態に係るシステムのネットワーク構成を示した図である。
上記第1の実施形態では、メッセージングサーバ100及び通知サーバ200はクラウド(WAN50)側にそれぞれ1台のみ設けられたが、同図に示すように、本実施形態では、メッセージングサーバ100及び通知サーバ200がそれぞれ複数設けられる。後述するが、このような構成により、デバイス300からのメッセージが、複数のメッセージングサーバ100間で中継される。
同図では、メッセージングサーバ100は計6台、通知サーバ200は計2台示されているが、メッセージングサーバ100及び通知サーバ200の数はこれらに限られない。
[各機器のモジュール構成]
図22は、上記メッセージングサーバ100、通知サーバ200及びデバイス300がそれぞれ有するソフトウェアモジュールの構成を示した図である。
(メッセージングサーバのモジュール構成)
同図に示すように、メッセージングサーバ100は、上記第1の実施形態と同様のモジュール(図4参照)に加えて、メッセージ転送部107を有する。
メッセージ転送部107は、メッセージングサーバ100(100A)が自ら担当しないデバイス300へメッセージを送るために、当該メッセージを他のメッセージングサーバ100(100B)へ転送する。
本実施形態において、通知サーバ200及びデバイス300が有するモジュールの構成は第1の実施形態で説明したものと同様である。
[システムの動作]
次に、以上のように構成されたシステムにおけるメッセージングサーバ100、通知サーバ200及びデバイス300の動作について、デバイス300間のデータ(メッセージ)送信処理を中心に説明する。
(デバイスが利用するサーバの決定処理)
本実施形態では、メッセージングサーバ100及び通知サーバ200が複数設けられることから、メッセージの送信処理に先立ち、各デバイス300がどのメッセージングサーバ100及び通知サーバ200を利用するかが予め決定される。このデバイス300とそれが利用する各サーバとの対応関係は、デバイスIDを基にした所定の計算により決定される。この決定処理についてまず説明する。
以下で説明する決定処理は一例であり、メッセージングサーバ100とデバイス300の双方で実行でき、どちらで実行しても同じ結果が得られることが保証されさえすれば、どのような方法で対応関係が決定されてもよい。
図23は、当該デバイス300に対応するサーバの決定処理の流れを示したフローチャートである。以下の処理は、メッセージングサーバ100の上記メッセージ転送部107が実行するものとして説明するが、他のモジュールが実行しても構わない。
同図に示すように、メッセージ転送部107は、まず、メッセージングサーバ100及び通知サーバ200のそれぞれについて、0から0xffffffffまでの値を、実際に用いるサーバの数に応じて分割し、サーバ割り当てテーブルを作成しておく(ステップ271)。当該テーブルは例えば記憶部18に記憶される。
図24は、メッセージングサーバ100についてのサーバ割り当てテーブルの例を示した図であり、図25は、通知サーバ200についてのサーバ割り当てテーブルの例を示した図である。両図に示すように、上記0から0xffffffffまでの値が所定の範囲ごとに分割され、当該値の範囲に対してそれぞれメッセージングサーバ100及び通知サーバ200の各サーバIDが割り当てられている。
続いてメッセージ転送部107は、サーバ割り当て対象のデバイス300から、そのノードIDを受信する(ステップ272)。
続いてメッセージ転送部107は、上記受信したノードIDと、所定のパディングデータとを組み合わせて、SHA256-HASHによるハッシュ値を計算する(ステップ273)。
続いてメッセージ転送部107は、得られたハッシュ値から、その下位32ビットを取り出す(ステップ274)。
そしてメッセージ転送部107は、上記取り出した下位32ビットを、上記サーバ割り当てテーブルから検索して、それに割り当てられたサーバIDを参照することで、対応するサーバIDを決定する(ステップ275)。
同図では、メッセージングサーバ100が決定処理を実行する例が示されたが、上記処理の全てまたは一部(例えばステップ272〜274)は、デバイス300で実行されてもよい。その際、上記サーバ割り当てテーブル等、必要な情報はメッセージングサーバ100からデバイス300へ送信される。
また、上記第1の実施形態と同様に、デバイスIDは、各デバイス300のハードウェアに埋め込まれた情報(Wireless LANのMACアドレスや携帯電話のIMEI等)に基づいて決定される。したがって、ユーザは、デバイス300を購入後、何も設定しなくても、当該デバイス300に対応するメッセージングサーバ100及び通知サーバ200と接続ができ、それらを介して任意の他のデバイス300と通信できる環境を享受できる。
(サーバのネットワークアドレスの決定処理)
本実施形態では、メッセージングサーバ100及び通知サーバ200が複数設けられることから、上記複数のメッセージングサーバ100及び通知サーバ200のサーバIDに対応する、TCP/IP上のネットワークアドレスも予め決定する必要がある。以下、当該ネットワークアドレスの決定処理について説明する。
このネットワークアドレスの決定処理についても、以下の説明は一例であり、メッセージングサーバ100とデバイス300の双方で実行でき、どちらで実行しても同じ結果が得られることが保証されさえすれば、どのような方法で実行されてもよい。
以下では、上記ネットワークアドレス(IPアドレス及びポート番号)を決定するために、(1)DNS(Domain Name System)を用いる例と、(2)レゾリューションテーブルを用いる例とを説明する。以下の処理も、メッセージングサーバ100の上記メッセージ転送部107が実行するものとして説明するが、他のモジュールが実行しても構わない。
(1)DNSを用いる例
メッセージングサーバ100のメッセージ転送部107は、ネットワークアドレス決定対象である他のメッセージングサーバ100のサーバ番号から、ホスト名を生成する。そしてメッセージ転送部107は、当該ホスト名を基に、TCP/IPネットワーク上のDNS機構を用いてIPアドレスを取得する。
例えば、メッセージングサーバ100のホスト名は"ms15.server.com"と生成され、通知サーバのホスト名は"ns1.server.com"と生成される。
また、それぞれのポート番号としては、固定値が用いられる。
そして、上記取得されたIPアドレス及びポート番号は、デバイス300、他のメッセージングサーバ100及び通知サーバ200に配布される。
(2)レゾリューションテーブルを用いる例
メッセージ転送部107は、サーバ番号に対応するIPアドレス及びポート番号を定めたレゾリューションテーブルを、メッセージングサーバ100と通知サーバ200のそれぞれについて作成する。これらレゾリューションテーブルは、デバイス300、他のメッセージングサーバ100及び通知サーバ200に配布される。
図26は、メッセージングサーバ100用のレゾリューションテーブルの例を示した図であり、図27は、通知サーバ200用のレゾリューションテーブルの例を示した図である。
(データ送信処理例)
次に、本実施形態におけるデバイス300間のデータ(メッセージ)送信処理を説明する。図28は、当該デバイス300間におけるデータ送信処理の流れの概要を模式的に示した図である。
同図に示すように、まず、メッセージ送信元のデバイス300Aが、デバイス300B宛のメッセージをメッセージングサーバ100Aへ送信する(同図(1))。
続いて、メッセージを受信したメッセージングサーバ100Aは、それが他のメッセージングサーバ100Bが対応すべきメッセージであると判断すると、当該メッセージをメッセージングサーバ100Bへ転送する(同図(2))。
続いて、メッセージを転送されたメッセージングサーバ100Bが、それに対応した通知サーバ200Bに対して、デバイス300Aからデバイス300B宛のメッセージの存在を通知するよう要求する通知要求を送信する。当該通知要求を受けた通知サーバ200Bは、それに対応するデバイス300Bへ通知メッセージを送信する(同図(3))。
そして、上記通知メッセージを受信したデバイス300Bが、それに対応するメッセージングサーバ100Bと接続を確立して、上記デバイス300Aからのメッセージを受信する(同図(4))。
(メッセージングサーバの動作)
次に、上記送信処理におけるメッセージングサーバ100の動作について説明する。以下の説明では、デバイス300から最初にメッセージを受信するメッセージングサーバ100Aの動作を示す。また、他のメッセージングサーバ100を説明の便宜上メッセージングサーバ100Bと称する。
図29は、メッセージングサーバ100Aの接続処理部101の動作の流れを示したフローチャートである。
同図に示すように、接続処理部101はまず、デバイス300または他のメッセージングサーバ100Bからの接続要求を待つ(ステップ291)。
デバイス300または他のメッセージングサーバ100Bからの接続要求があった場合(ステップ292のYes)、接続処理部101は、当該接続要求を受け入れ、接続を確立する(ステップ293)。
続いて接続処理部101は、接続元のデバイス300または他のメッセージングサーバ100Bから、そのノードID(デバイスID、サーバID)を受信する(ステップ294)。
そして接続処理部101は、上記接続情報リスト104に上記ノードID及び接続に関する情報(IPアドレス及びソケット番号)を記録し、当該デバイス300または他のメッセージングサーバ100Bを新たに接続管理対象に加える(ステップ295)。
図30は、メッセージングサーバ100Aの接続管理部102の動作の流れを示したフローチャートである。
同図に示すように、接続管理部102はまず、上記接続情報リスト104で管理している全ての接続について、メッセージの受信、エラーまたは通信切断の何れかを待つ(ステップ301)。
続いて接続管理部102は、メッセージを受信したか否かを判断する(ステップ302)。
メッセージを受信したと判断した場合(Yes)、接続管理部102は、当該メッセージから、その送付先に設定されているノードIDを取得する(ステップ303)。
続いて接続管理部102は、取得したノードIDが、メッセージングサーバ100AのノードID(サーバID)であるか否かを判断する(ステップ304)。
上記ノードIDがメッセージングサーバ100AのノードIDであると判断した場合(Yes)、メッセージ処理部105が上記メッセージを処理する(ステップ305)。
一方、送付先のノードIDがメッセージングサーバ100AのノードIDでないと判断した場合(No)、接続管理部102は、上記サーバ割り当てテーブルを参照して、送付先に設定されているノードIDから、それに対応するメッセージングサーバのノードIDを判定する(ステップ306)。
続いて接続管理部102は、上記ユーザIDに対応するメッセージングサーバのノードIDがメッセージングサーバ100AのノードIDであるか否かを判断する(ステップ307)。
対応するメッセージングサーバのノードIDがメッセージングサーバ100AのノードIDであると判断した場合(Yes)、接続管理部102は、メッセージ送信部106へ上記メッセージを引き渡す(ステップ308)。
一方、対応するメッセージングサーバのノードIDが他のメッセージングサーバ100BのノードIDであると判断した場合(No)、接続管理部102は、メッセージ転送部107へ上記メッセージを引き渡す(ステップ309)。
上記ステップ302において、メッセージを受信していないと判断した場合(No)、接続管理部102は、管理対象のいずれかの接続について、エラーの発生または通信切断があったか否かを判断する(ステップ310)。
エラーの発生または通信切断があったと判断した場合(Yes)、接続管理部102は、当該エラーが発生しまたは通信が切断された接続に関するエントリを接続情報リスト104から除外する(ステップ311)。
図31は、メッセージングサーバ100Aのメッセージ転送部107の動作の流れを示したフローチャートである。
同図に示すように、メッセージ転送部107は、上記接続情報リスト104に基づき、他のメッセージングサーバ100BのノードIDに対応する接続が存在するか(他のメッセージングサーバ100Bに既に接続されているか)否かを確認する(ステップ311)。
対応する接続が存在すると判断した場合(ステップ312のYes)、メッセージ転送部107は、当該接続された他のメッセージングサーバ100Bへメッセージを転送する(ステップ313)。
一方、対応する接続が存在しないと判断した場合(ステップ312のNo)、メッセージ転送部107は、当該他のメッセージングサーバ100Bと接続を確立する(ステップ314)。
そしてメッセージ転送部107は、上記接続情報リスト104にそのエントリを追加した上で(ステップ315)、上記ステップ311以降の処理を繰り返す。
[まとめ]
以上説明したように、本実施形態においては、メッセージングサーバ100及び通知サーバ200が複数設けられ、メッセージングサーバ100間でメッセージが転送されることで、非常に多数のデバイス300間での通信がサポートされる。
<第3の実施形態>
次に、本技術の第3の実施形態を説明する。本実施形態において、上記第1及び第2の実施形態と同様の構成及び機能を有する箇所には同一の符号を付し、説明を省略する。
[システムのネットワーク構成]
図32は、本実施形態に係るシステムのネットワーク構成を示した図である。
上述の第1及び第2の実施形態では、各デバイス300をそれぞれ別々のユーザが所有することを前提にしていた。しかし、複数のデバイス300を複数のユーザが所有することも当然あり得る。その場合、同じユーザが所有するデバイス300間の通信は、他と比較して多くなると考えられる。そこで本実施形態では、各デバイス300の「オーナー」という概念を導入し、オーナーを識別するユーザIDが設定されているデバイス300については、当該ユーザIDからそれに対応するメッセージングサーバ100及び通知サーバ200を決定することとしている。
同図に示すように、本実施形態でも、上記第2の実施形態と同様に、メッセージングサーバ100及び通知サーバ200はそれぞれクラウド上に複数存在する。またデバイス300中、デバイス300Bとデバイス300Cには同一のユーザがオーナーとして設定されている。この場合、デバイス300Bはメッセージングサーバ100B及び通知サーバ200Bがその対応する各サーバとして設定される。またデバイス300Cについては、上記第2の実施形態で説明したサーバ割り当てテーブルに基づいて、メッセージングサーバ100Cと通知サーバ200Cがその対応する各サーバに設定されるほか、デバイス300Bと同一のユーザIDを有することから、メッセージングサーバ100B及び通知サーバ200Bもその対応する各サーバとして設定される。
[システムの動作]
次に、以上のように構成されたシステムにおけるメッセージングサーバ100、通知サーバ200及びデバイス300の動作について、デバイス300間のデータ(メッセージ)送信処理を中心に説明する。
(ユーザIDを基にした利用サーバの決定処理)
メッセージングサーバ100は、初期データとして、上記第2の実施形態で説明したようなデバイスIDを基にしたメッセージングサーバ割り当てテーブル及び通知サーバ割り当てテーブル(以下、デバイスID用サーバ割り当てテーブルと称する)に加えて、ユーザIDを基にしたメッセージングサーバ割り当てテーブル及び通知サーバ割り当てテーブル(以下、ユーザID用サーバ割り当てテーブルと称する)を作成する。これらのテーブルは予め各デバイス300並びに各メッセージングサーバ100及び通知サーバ200へ配布される。当該ユーザID用サーバ割り当てテーブルの作成方法は、デバイスIDがユーザIDに代わる以外は、上記第2実施形態で説明したのと同様である。
これらデバイスID用サーバ割り当てテーブル及びユーザID用サーバ割り当てテーブルは、デバイス300側で作成されてもよい。
上記各テーブルの作成にあたって、デバイスIDを基に割り当てられる各サーバ群と、ユーザIDを基に割り当てられる各サーバ群とは、別個に用意される。
また各デバイス300は、ユーザID(オーナーID)を記録する手段を有する。各デバイス300の初期状態では、NULLが設定される。
ユーザIDが未設定のデバイス300は、上記第2実施形態と同様に、デバイスIDによって決定されるメッセージングサーバ100及び通知サーバ200と接続する。
一方、ユーザIDが設定済みのデバイス300は、デバイスIDとユーザIDのそれぞれによって決定されるメッセージングサーバ100及び通知サーバ200の全てと接続可能とされている。メッセージ送信側のデバイス300は、通常はそのユーザIDによって決定されるメッセージングサーバ100に接続する。メッセージ受信側のデバイス300は、メッセージの宛先にユーザIDが設定されていればそれに対応するメッセージングサーバ100へ接続し、そうでない場合にはデバイスIDに対応するメッセージングサーバ100へ接続する。
各デバイス300は、メッセージ送付先のデバイス300のデバイスIDとユーザIDの双方を知っている場合には、双方をメッセージの宛先に設定してメッセージを送信する。
一方、各デバイス300は、メッセージ送付先のデバイス300のデバイスIDのみを知っている場合には、当該デバイスIDをメッセージの宛先に設定してメッセージを送信する。
(メッセージングサーバの動作)
次に、上記メッセージ送信処理におけるメッセージングサーバ100の動作について説明する。図33は、当該動作の流れを示したフローチャートである。以下の説明では、デバイス300から最初にメッセージを受信するメッセージングサーバ100Aの動作を示す。また、他のメッセージングサーバ100を説明の便宜上メッセージングサーバ100Bと称する。
同図に示すように、メッセージングサーバ100Aの接続管理部102はまず、上記接続情報リスト104で管理している全ての接続について、メッセージの受信、エラーまたは通信切断の何れかを待つ(ステップ331)。
続いて接続管理部102は、メッセージを受信したか否かを判断する(ステップ332)。
メッセージを受信したと判断した場合(Yes)、接続管理部102は、当該メッセージから、その送付先に設定されているユーザID及びノードIDを取得する(ステップ333)。
続いて接続管理部102は、取得したノードIDが、メッセージングサーバ100AのノードID(サーバID)であるか否かを判断する(ステップ334)。
上記ノードIDがメッセージングサーバ100AのノードIDであると判断した場合(Yes)、メッセージ処理部105が上記メッセージを処理する(ステップ335)。
一方、送付先のノードIDがメッセージングサーバ100AのノードIDでないと判断した場合(No)、接続管理部102は、送付先としてユーザIDとノードIDの双方が存在するか否かを判断する(ステップ336)。
送付先のユーザIDとノードIDの双方が存在すると判断した場合(Yes)、接続管理部102は、上記ユーザID用サーバ割り当てテーブルを参照して、送付先に設定されているユーザIDから、それに対応するメッセージングサーバのノードIDを判定する(ステップ337)。
続いて接続管理部102は、上記ユーザIDに対応するメッセージングサーバのノードIDがメッセージングサーバ100AのノードIDであるか否かを判断する(ステップ338)。
対応するメッセージングサーバのノードIDがメッセージングサーバ100AのノードIDであると判断した場合(Yes)、接続管理部102は、メッセージ送信部106へ上記メッセージを引き渡す(ステップ339)。
一方、対応するメッセージングサーバのノードIDが他のメッセージングサーバ100BのノードIDであると判断した場合(No)、接続管理部102は、メッセージ転送部107へ上記メッセージを引き渡す(ステップ340)。
上記ステップ336において、送付先のユーザIDとノードIDの双方が存在しない、すなわち、ノードIDのみが存在すると判断した場合(No)、接続管理部102は、上記デバイスID用サーバ割り当てテーブルを参照して、送付先に設定されているノードID(デバイスID)から、それに対応するメッセージングサーバのノードIDを判定する(ステップ341)。
続いて接続管理部102は、上記ノードIDに対応するメッセージングサーバのノードIDがメッセージングサーバ100AのノードIDであるか否かを判断する(ステップ342)。
対応するメッセージングサーバのノードIDがメッセージングサーバ100AのノードIDであると判断した場合(Yes)、接続管理部102は、メッセージ送信部106へ上記メッセージを引き渡す(ステップ343)。
一方、対応するメッセージングサーバのノードIDが他のメッセージングサーバ100BのノードIDであると判断した場合(No)、接続管理部102は、メッセージ転送部107へ上記メッセージを引き渡す(ステップ344)。
上記ステップ332において、メッセージを受信していないと判断した場合(No)、接続管理部102は、管理対象のいずれかの接続について、エラーの発生または通信切断があったか否かを判断する(ステップ346)。
エラーの発生または通信切断があったと判断した場合(Yes)、接続管理部102は、当該エラーが発生しまたは通信が切断された接続に関するエントリを接続情報リスト104から除外する(ステップ347)。
[まとめ]
以上説明したように、本実施形態によれば、同一のユーザIDが設定されたデバイス300は、メッセージの宛先に当該ユーザIDが設定されている限り、同一のメッセージングサーバ100及び通知サーバ200に接続することになる。したがって、メッセージングサーバ100間の通信が削減され、クラウド側の負荷が低減する。
[変形例]
本技術は上述の実施形態にのみ限定されるものではなく、本技術の要旨を逸脱しない範囲内において種々変更され得る。
上述の各実施形態では、メッセージングサーバ100から通知サーバ200への通信は、通信の度に接続確立/接続解除されるが、一定時間は接続が維持されてもよい。
上述の各実施形態では、メッセージングサーバ100は、複数の通知手段が利用可能な場合、それらを順に試していた。しかし、メッセージングサーバ100は、レスポンスを向上させるため、複数の通信手段が利用可能な場合、優先順位に従って試してもよいし、複数の通知手段で並行して通知してもよい。
上述の各実施形態では、通知手段を設定するために各デバイス300に通知手段設定部301が設けられたが、各デバイス300が特定の通知手段しか用いない場合は、通知手段設定部301は省略されてもよい。
上述の各実施形態では、各デバイス300には、通知サーバ200の利用の有無に応じて、通知サーバ通知受信部302と直接通知受信部303とが設けられたが、それらはどちらか一方のみが動作してもよいし、同時に動作可能とされてもよい。
上述の各実施形態では、各デバイス300のメッセージ受信部304で用いられる接続は、一度確立すると一定時間保持されていたが、メッセージ受信部304は、必要に応じてサーバと毎回接続してもよい。また上述の各実施形態では、各デバイス300のメッセージ送信部305で用いられる接続は、毎回接続確立/接続解除されるが、一度接続が確立した場合には一定時間それが保持されてもよい。
上述の各実施形態では、各デバイス300のメッセージ受信部304及びメッセージ送信部305は別個のモジュールとして示されたが、両者で用いられる接続が共用されてもよい。
上述の各実施形態では、各デバイス300は、メッセージングサーバ100と接続している期間も、通知サーバ200との接続を維持していた。しかし、各デバイス300は、一旦通知サーバ200との接続を切断し、メッセージングサーバ100との接続が解除されたときに、再度通知サーバ200と接続してもよい。
上述の各実施形態では、デバイス300間のメッセージングサーバ100経由でのやり取りには、全てメッセージが用いられていた。しかし、各デバイス300のアプリケーションには、このメッセージ機構を元に、RPC(Remote Procedure Call)機構やストリーム通信機構、さらにはHTTPエミューレーション等の通信機構が提供されてもよい。
上述の実施形態では、メッセージングサーバ100と通知サーバ200とは物理的に異なるサーバとして示された。しかし、両者の違いは、各デバイス300との接続についてのバッファサイズの設定や取り扱い方から生じることから、物理的に異なるサーバ上で動作させる形態でなくとも、以下のような形態でも同様の効果が得られる。
(1)単一のサーバマシン上で通知サーバプロセスとメッセージングサーバプロセス双方を動作させる。
(2)単一のサーバマシン上で、通知サーバ機能とメッセージングサーバ機能を持った1つのサーバプロセスを動作させる(デバイス300との通信状況に応じて、通知サーバ相当の接続形態と、メッセージングサーバ相当の接続形態を切り替える)。
[その他]
本技術は以下のような構成も採ることができる。
[1]
第1の機器、第2の機器、並びに前記第2の機器とネットワークを介して常時接続される常時接続サーバとの間で、前記ネットワークを介して必要に応じて接続して通信可能な通信部と、
前記第1の機器から、前記第2の機器宛のデータを受信し、当該データの存在を通知する通知メッセージを前記第2の機器へ送信するように要求する通知要求情報を前記常時接続サーバへ送信し、前記通知メッセージを受信した第2の機器からの要求に応じて、前記データを当該第2の機器へ送信するように、前記通信部を制御可能な制御部と
を具備する情報処理装置。
[2]
上記[1]に記載の情報処理装置であって、
記憶部をさらに具備し、
前記第2の機器は、通信中継装置を介して当該情報処理装置及び前記常時接続サーバと通信し、
前記制御部は、
前記通信中継装置が、当該情報処理装置からの通信を第2の機器へ転送するように設定されている場合には、当該転送設定に関する情報を記憶するように前記記憶部を制御し、
前記記憶された情報を用いて、前記通知要求情報の送信に代えて、または、前記通知要求情報の送信に加えて、前記通知メッセージを前記第2の機器へ直接送信するように前記通信部を制御する
情報処理装置。
[3]
上記[1]または[2]に記載の情報処理装置であって、
前記制御部は、前記第2の機器にグローバルIPアドレスが割り当てられている場合には、前記通知要求情報の送信に代えて、または、前記通知要求情報の送信に加えて、前記通知メッセージを前記第2の機器へ直接送信するように前記通信部を制御する
情報処理装置。
[4]
上記[1]〜[3]のいずれかに記載の情報処理装置であって、
当該情報処理装置及び前記常時接続サーバはそれぞれ複数存在し、
前記第1の機器及び前記第2の機器は、それぞれ1つの前記情報処理装置及び前記常時接続サーバと通信するよう、当該第1の機器、前記第2の機器、前記複数の情報処理装置、前記複数の常時接続サーバをそれぞれ一意に識別する機器識別情報を用いて対応付けられており、
前記制御部は、前記機器識別情報を基に、前記第2の機器が他の情報処理装置と対応付けられていると判断した場合には、前記データを当該他の情報処理装置へ転送するように前記通信部を制御する
情報処理装置。
[5]
上記[4]に記載の情報処理装置であって、
記憶部をさらに具備し、
前記制御部は、
前記第1の機器及び前記第2の機器のそれぞれの機器識別情報を基に所定のハッシュ関数から得られるハッシュ値に基づいた値と、当該複数の情報処理装置のそれぞれの識別情報との対応関係を定めたテーブルを作成し、
前記作成されたテーブルを記憶するように前記記憶部を制御し、
前記記憶されたテーブルを基に、前記第2の機器に対応する他の情報処理装置を決定する
情報処理装置。
[6]
上記[5]に記載の情報処理装置であって、
前記制御部は、前記第1の機器及び前記第2の機器にそれぞれを所有するユーザを一意に識別するユーザ識別情報が設定されている場合には、前記機器識別情報に代えて前記ユーザ識別情報を用いて前記テーブルを作成する
情報処理装置。
11、31…CPU
12、32…ROM
13、33…RAM
18、38…記憶部
19、39…通信部
50…WAN
100(100A,100B,100C)…メッセージングサーバ
101…接続処理部
102…接続管理部
103…通知手段リスト
104…接続情報リスト
105…メッセージ処理部
106…メッセージ送信部
107…メッセージ転送部
200(200A,200B,200C)…通知サーバ
201…接続処理部
202…接続管理部
203…接続情報リスト
300(300A,300B,300C)…デバイス
301…通知手段設定部
302…通知サーバ通知受信部
303…直接通知受信部
304…メッセージ受信部
305…メッセージ送信部
306…メッセージ処理部
310(310A,310B)…通信中継装置

Claims (6)

  1. 第1の機器、第2の機器、並びに前記第2の機器とネットワークを介して常時接続される常時接続サーバとの間で、前記ネットワークを介して必要に応じて接続して通信可能な通信部と、
    前記第1の機器から、前記第2の機器宛のデータを受信し、当該データの存在を通知する通知メッセージを前記第2の機器へ送信するように要求する通知要求情報を前記常時接続サーバへ送信し、前記通知メッセージを受信した第2の機器からの要求に応じて、前記データを当該第2の機器へ送信するように、前記通信部を制御可能な制御部と
    記憶部とを具備し、
    前記第2の機器は、通信中継装置を介して当該情報処理装置及び前記常時接続サーバと通信し、
    前記制御部は、
    前記通信中継装置が、当該情報処理装置からの通信を第2の機器へ転送するように設定されている場合には、当該転送設定に関する情報を記憶するように前記記憶部を制御し、
    前記記憶された情報を用いて、前記通知要求情報の送信に代えて、または、前記通知要求情報の送信に加えて、前記通知メッセージを前記第2の機器へ直接送信するように前記通信部を制御する
    情報処理装置。
  2. 第1の機器、第2の機器、並びに前記第2の機器とネットワークを介して常時接続される常時接続サーバとの間で、前記ネットワークを介して必要に応じて接続して通信可能な通信部と、
    前記第1の機器から、前記第2の機器宛のデータを受信し、当該データの存在を通知する通知メッセージを前記第2の機器へ送信するように要求する通知要求情報を前記常時接続サーバへ送信し、前記通知メッセージを受信した第2の機器からの要求に応じて、前記データを当該第2の機器へ送信するように、前記通信部を制御可能な制御部と
    を具備し、
    前記制御部は、前記第2の機器にグローバルIPアドレスが割り当てられている場合には、前記通知要求情報の送信に代えて、または、前記通知要求情報の送信に加えて、前記通知メッセージを前記第2の機器へ直接送信するように前記通信部を制御する
    情報処理装置。
  3. 第1の機器、第2の機器、並びに前記第2の機器とネットワークを介して常時接続される常時接続サーバとの間で、前記ネットワークを介して必要に応じて接続して通信可能な通信部と、
    前記第1の機器から、前記第2の機器宛のデータを受信し、当該データの存在を通知する通知メッセージを前記第2の機器へ送信するように要求する通知要求情報を前記常時接続サーバへ送信し、前記通知メッセージを受信した第2の機器からの要求に応じて、前記データを当該第2の機器へ送信するように、前記通信部を制御可能な制御部と、
    記憶部と、を具備し、
    当該情報処理装置及び前記常時接続サーバはそれぞれ複数存在し、
    前記第1の機器及び前記第2の機器は、それぞれ1つの前記情報処理装置及び前記常時接続サーバと通信するよう、当該第1の機器、前記第2の機器、前記複数の情報処理装置、前記複数の常時接続サーバをそれぞれ一意に識別する機器識別情報を用いて対応付けられており、
    前記制御部は、前記機器識別情報を基に、前記第2の機器が他の情報処理装置と対応付けられていると判断した場合には、前記データを当該他の情報処理装置へ転送するように前記通信部を制御し、
    前記制御部は、
    前記第1の機器及び前記第2の機器のそれぞれの機器識別情報を基に所定のハッシュ関数から得られるハッシュ値に基づいた値と、当該複数の情報処理装置のそれぞれの識別情報との対応関係を定めたテーブルを作成し、
    前記作成されたテーブルを記憶するように前記記憶部を制御し、
    前記記憶されたテーブルを基に、前記第2の機器に対応する他の情報処理装置を決定する
    情報処理装置。
  4. 請求項に記載の情報処理装置であって、
    前記制御部は、前記第1の機器及び前記第2の機器にそれぞれを所有するユーザを一意に識別するユーザ識別情報が設定されている場合には、前記機器識別情報に代えて前記ユーザ識別情報を用いて前記テーブルを作成する
    情報処理装置。
  5. 第1の機器とネットワークを介して接続を確立して当該第1の機器から第2の機器宛のデータを受信し、
    前記データの存在を通知する通知メッセージを当該第2の機器へ送信するように要求する通知要求情報を、前記第2の機器と常時接続されたサーバへ送信し、
    前記通知メッセージを受信した前記第2の機器からの要求に応じて、通信中継装置を介して接続を確立して当該第2の機器へ前記データを送信し、
    前記通信中継装置に記憶されている情報を用いて、前記通知要求情報の送信に代えて、または、前記通信要求情報の送信に加えて、前記通知メッセージを前記第2の機器へ直接送信する
    情報処理方法。
  6. 情報処理装置に、
    第1の機器とネットワークを介して接続を確立して当該第1の機器から第2の機器宛のデータを受信するステップと、
    前記データの存在を通知する通知メッセージを当該第2の機器へ送信するように要求する通知要求情報を、前記第2の機器と常時接続された常時接続サーバへ送信するステップと、
    前記通知メッセージを受信した前記第2の機器からの要求に応じて、通信中継装置を介して当該第2の機器と接続を確立して当該第2の機器へ前記データを送信するステップと、
    前記通信中継装置に記憶されている情報を用いて、前記通知要求情報の送信に代えて、または、前記通信要求情報の送信に加えて、前記通知メッセージを前記第2の機器へ直接送信すステップと、
    を実行させるプログラム。
JP2013558589A 2012-02-13 2012-11-27 情報処理装置、情報処理方法及びプログラム Expired - Fee Related JP5962676B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2012028074 2012-02-13
JP2012028074 2012-02-13
PCT/JP2012/007588 WO2013121487A1 (ja) 2012-02-13 2012-11-27 情報処理装置、情報処理方法及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2013121487A1 JPWO2013121487A1 (ja) 2015-05-11
JP5962676B2 true JP5962676B2 (ja) 2016-08-03

Family

ID=48983657

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013558589A Expired - Fee Related JP5962676B2 (ja) 2012-02-13 2012-11-27 情報処理装置、情報処理方法及びプログラム

Country Status (4)

Country Link
US (1) US20140365606A1 (ja)
JP (1) JP5962676B2 (ja)
CN (1) CN104094243B (ja)
WO (1) WO2013121487A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6291802B2 (ja) * 2013-11-18 2018-03-14 株式会社リコー 制御システム、通信システム、プログラム、及び制御方法
JP5940566B2 (ja) * 2014-01-15 2016-06-29 シャープ株式会社 ネットワークシステム、常時接続方法、サーバ、電子機器、プログラム
JP2015103123A (ja) * 2013-11-27 2015-06-04 シャープ株式会社 ネットワークシステム、通信方法、電子機器、アプリケーションサーバ、プログラム
JP5929946B2 (ja) * 2014-02-27 2016-06-08 コニカミノルタ株式会社 画像形成システム、中継サーバー、通信制御方法及びプログラム
KR20160061681A (ko) * 2014-11-24 2016-06-01 삼성전자주식회사 메시지 전송 시스템, 메시지 전송 서버, 사용자 단말 장치, 메시지 전송 방법 및 메시지 수신 방법
JP7311780B2 (ja) * 2019-10-28 2023-07-20 株式会社バッファロー ルータ、制御プログラム、端末装置、通信システム
CN112752353B (zh) * 2019-10-31 2022-06-10 中移物联网有限公司 一种连接方法及终端设备
CN113285971B (zh) * 2021-02-23 2022-11-18 江苏未来智慧信息科技有限公司 针对工具柜的数据输送平台和输送方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6965917B1 (en) * 1999-09-07 2005-11-15 Comverse Ltd. System and method for notification of an event
US6498835B1 (en) * 2000-02-29 2002-12-24 Ameritech Corporation Method and system for providing visual notification in a unified messaging system
JP2002344529A (ja) * 2001-05-21 2002-11-29 Sharp Corp プッシュ型サービスシステム
US7499973B2 (en) * 2001-12-21 2009-03-03 Motorola, Inc. System and method for automatically forwarding a communication message
US7899932B2 (en) * 2003-01-15 2011-03-01 Panasonic Corporation Relayed network address translator (NAT) traversal
JP4648906B2 (ja) * 2004-08-31 2011-03-09 一博 椎名 通話を伴うプッシュ型情報通信システム
CN100533415C (zh) * 2005-05-11 2009-08-26 索尼株式会社 服务器设备、用于其的器件间连接方法
US7853245B2 (en) * 2005-11-08 2010-12-14 Research In Motion Limited System and methods for wireless messaging
JP4715553B2 (ja) * 2006-03-01 2011-07-06 パナソニック電工株式会社 防犯システム
US8924489B2 (en) * 2011-01-05 2014-12-30 Apple Inc. Message push notification client improvements for multi-user devices
US20120331526A1 (en) * 2011-06-22 2012-12-27 TerraWi, Inc. Multi-level, hash-based device integrity checks

Also Published As

Publication number Publication date
JPWO2013121487A1 (ja) 2015-05-11
WO2013121487A1 (ja) 2013-08-22
CN104094243B (zh) 2017-03-08
CN104094243A (zh) 2014-10-08
US20140365606A1 (en) 2014-12-11

Similar Documents

Publication Publication Date Title
JP5962676B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP6785376B2 (ja) IoTデバイスコネクティビティ、ディスカバリ、ネットワーキング
JP5888405B2 (ja) 情報処理装置、情報処理方法及びプログラム
WO2016146077A1 (zh) 一种动态路由配置方法、装置及系统
JP2008181427A (ja) シングルサインオンシステム、情報端末装置、シングルサインオンサーバ、プログラム
JP6279938B2 (ja) 接続管理装置、通信システム、接続管理方法およびプログラム
JP5880688B2 (ja) 情報処理装置、情報処理システム、情報処理方法及びプログラム
JP2008225644A (ja) ゲートウェイ装置、ゲートウェイ装置の負荷分散方法及びゲートウェイ装置の負荷分散プログラム
US10498836B2 (en) Network based service discovery via unicast messages
JP6193155B2 (ja) 通信装置、通信システム、通信方法およびプログラム
JP4683345B2 (ja) ネットワーク負荷分散装置、ネットワーク負荷分散方法及びプログラム
JP2008236278A (ja) 通信接続方法及び通信装置
CN117397232B (zh) 用于无代理协议的方法、系统
WO2011117959A1 (ja) 通信装置、通信装置の制御方法、プログラム
JP2015046716A (ja) 通信ノード及びネットワークシステム及び機器制御方法
US20230143067A1 (en) Cross-LAN Communication and Group Member Contact Synchronization
JP2017017587A (ja) ルータ装置、接続確立方法、通信システム、通信端末
JP2017212572A (ja) リモートアクセスサービスシステム、情報処理装置、ゲートウェイ装置及びプログラム
JP2017028383A (ja) センサ収容システム、ゲートウェイ、管理サーバ、センサ収容方法及びセンサ収容プログラム
JP6445421B2 (ja) 通信装置および通信方法
JP2015109637A (ja) データ通信システム、それに用いられる転送装置および中継装置、並びにプログラム
JP2008258965A (ja) 電子装置、名前解決方法および名前解決制御プログラム
US20180248958A1 (en) Sharing local network resources with a remote vdi instance
JP2008219483A (ja) 中継装置、およびプログラム
JP2008028798A (ja) ネットワーク機器、およびipネットワークシステム、ならびに同システムにおけるネットワーク機器の接続設定方法、プログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160322

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160509

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160613

R151 Written notification of patent or utility model registration

Ref document number: 5962676

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees