(57)【特許請求の範囲】
【請求項１】
負荷分散装置と第１のネットワークを介して接続され、前記負荷分散装置を介して第２のネットワークに接続された複数の情報処理装置を含むメッセージ配信システムであって、
前記負荷分散装置は、前記第２のネットワークに接続された端末装置を、各情報処理装置の負荷状況に応じて前記複数の情報処理装置に分散して割り当て、
各情報処理装置は、
該情報処理装置との接続が確立している端末装置から、該端末装置が属するグループの情報を付帯したメッセージを受信した場合、前記メッセージを送信した端末装置と同一のグループに属し、該情報処理装置との接続が確立している他の端末装置に前記メッセージを送信するとともに、該情報処理装置との接続が確立している他の情報処理装置に前記メッセージを送信し、
他の情報処理装置との接続が確立している端末装置から送信されたメッセージを前記他の情報処理装置から受信した場合、前記メッセージを送信した端末装置と同一のグループに属し、該情報処理装置との接続が確立している端末装置に前記メッセージを送信する、
ことを特徴とするメッセージ配信システム。
【請求項２】
前記各情報処理装置は、前記各情報処理装置との接続が確立している端末装置の情報を個別に管理することを特徴とする請求項１に記載のメッセージ配信システム。
【請求項３】
前記複数の情報処理装置のうち稼働中の情報処理装置の情報を管理する情報管理装置を備え、
前記各情報処理装置は、前記メッセージの送信に失敗した、または、接続の切断を検出した情報処理装置が存在する場合に、該情報処理装置の情報を前記情報管理装置に送信し、
前記情報管理装置は、前記稼働中の情報処理装置の情報から、前記メッセージの送信に失敗した、または、接続の切断を検出した情報処理装置の情報を削除する、
ことを特徴とする請求項１または２に記載のメッセージ配信システム。
【請求項４】
前記各情報処理装置は、
該情報処理装置との接続が確立している他の情報処理装置の情報を個別に管理し、
前記メッセージの送信に失敗した、または、接続の切断を検出した情報処理装置の情報を、個別に管理している前記他の情報処理装置の情報から削除する、
ことを特徴とする請求項３に記載のメッセージ配信システム。
【請求項５】
前記各情報処理装置は、
前記他の情報処理装置に送信する前記メッセージに、該メッセージが前記各情報処理装置から送信されたメッセージであることを示すフラグを付加し、
前記フラグが付加された前記メッセージを受信した場合、前記フラグが付加された前記メッセージを他の情報処理装置に送信しない、
ことを特徴とする請求項１〜４のいずれか一項に記載のメッセージ配信システム。
【請求項６】
前記複数の情報処理装置は、Ｗｅｂｓｏｃｋｅｔにより互いの接続が確立されており、
前記各情報処理装置と前記端末装置とはＷｅｂｓｏｃｋｅｔにより接続が確立されていることを特徴とする請求項１〜５のいずれか一項に記載のメッセージ配信システム。
【請求項７】
負荷分散装置と第１のネットワークを介して接続され、前記負荷分散装置を介して第２のネットワークに接続された複数の情報処理装置を含むメッセージ配信システムにおいて、前記第２のネットワークに接続された端末装置のうち、前記負荷分散装置によって各情報処理装置の負荷状況に応じて自装置に割り当てられ、前記自装置との接続が確立している端末装置から、該端末装置が属するグループの情報を付帯したメッセージを受信した場合、前記メッセージを送信した端末装置と同一のグループに属し、前記自装置との接続が確立している他の端末装置に前記メッセージを送信するとともに、前記自装置との接続が確立している他の情報処理装置に前記メッセージを送信し、
他の情報処理装置との接続が確立している端末装置から送信されたメッセージを前記他の情報処理装置から受信した場合、前記メッセージを送信した端末装置と同一のグループに属し、前記自装置との接続が確立している端末装置に前記メッセージを送信する、
処理をコンピュータに実行させることを特徴とするメッセージ配信プログラム。
【請求項８】
負荷分散装置と第１のネットワークを介して接続され、前記負荷分散装置を介して第２のネットワークに接続された第１の情報処理装置及び第２の情報処理装置を含むメッセージ配信システムにおけるメッセージ配信方法であって、
前記第１の情報処理装置が、前記第２のネットワークに接続された端末装置のうち前記負荷分散装置により前記第１の情報処理装置及び前記第２の情報処理装置の負荷状況に応じて前記第１の情報処理装置に割り当てられ、前記第１の情報処理装置との接続が確立している端末装置から該端末装置が属するグループの情報を付帯したメッセージを受信した場合、前記メッセージを送信した端末装置と同一のグループに属し、前記第１の情報処理装置との接続が確立している他の端末装置に前記メッセージを送信するとともに、前記第１の情報処理装置との接続が確立している第２の情報処理装置に前記メッセージを送信し、
前記第２の情報処理装置が、前記第１の情報処理装置から受信した前記メッセージを、前記メッセージを送信した端末装置と同一のグループに属し、前記第２の情報処理装置との接続が確立している端末装置に送信する、
ことを特徴とするメッセージ配信方法。
【請求項９】
負荷分散装置と第１のネットワークを介して接続され、前記負荷分散装置を介して第２のネットワークに接続された複数の情報処理装置を含むメッセージ配信システムにおいて、前記第２のネットワークに接続された端末装置のうち、前記負荷分散装置によって各情報処理装置の負荷状況に応じて自装置に割り当てられ、前記自装置との接続が確立している端末装置、または、他の情報処理装置からメッセージを受信する受信部と、
前記自装置との接続が確立している端末装置から、該端末装置が属するグループの情報を付帯したメッセージを受信した場合、前記メッセージを送信した端末装置と同一のグループに属し、前記自装置との接続が確立している他の端末装置に前記メッセージを送信するとともに、前記自装置との接続が確立している他の情報処理装置に前記メッセージを送信し、前記他の情報処理装置との接続が確立している端末装置から送信されたメッセージを前記他の情報処理装置から受信した場合、前記メッセージを送信した端末装置と同一のグループに属し、前記自装置との接続が確立している端末装置に前記メッセージを送信する送信部と、
を備えることを特徴とするメッセージ配信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メッセージ配信システム、メッセージ配信プログラム、メッセージ配信方法、およびメッセージ配信装置に関する。
【背景技術】
【０００２】
ＷｅｂＳｏｃｋｅｔ（ウェブソケット）は、サーバとクライアント装置とが双方向通信を行うための技術である。Ｗｅｂｓｏｃｋｅｔでは、サーバとクライアント装置とは、コネクションを確立した後は、そのコネクションを切断しない限り、データのやり取りをソケット通信で行うことができる。例えば、特許文献１に記載されたサーバでは、Ｗｅｂｓｏｃｋｅｔによりサーバに接続された複数のクライアント装置のうち特定のクライアント装置からメッセージを受信すると、当該メッセージで指定されたグループに属する他のクライアント装置にメッセージを転送している。
【０００３】
ところで、近年、ウェブサービスが大規模化しており、単一のウェブサーバでそのサービスをまかなうことが困難である場合が多い。そのため、大規模なウェブサービスシステムでは、複数のウェブサーバと、それらのウェブサーバの間で負荷を平準化して特定のウェブサーバへのトラフィックの集中を回避するための負荷分散装置とを設置するのが一般的である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１８６７６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、このような複数のウェブサーバにより負荷分散を行っているシステムにおける、Ｗｅｂｓｏｃｋｅｔを利用したメッセージングについて十分に検討されていない。
【０００６】
１つの側面では、本発明は、異なる情報処理装置に接続された端末装置間でのメッセージングを実現することができるメッセージ配信システム、メッセージ配信プログラム、メッセージ配信方法、およびメッセージ配信装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
一つの態様では、メッセージ配信システムは、負荷分散装置と第１のネットワークを介して接続され、前記負荷分散装置を介して第２のネットワークに接続された複数の情報処理装置を含むメッセージ配信システムであって、前記負荷分散装置は、前記第２のネットワークに接続された端末装置を、各情報処理装置の負荷状況に応じて前記複数の情報処理装置に分散して割り当て、各情報処理装置は、該情報処理装置との接続が確立している端末装置から、該端末装置が属するグループの情報を付帯したメッセージを受信した場合、前記メッセージを送信した端末装置と同一のグループに属し、該情報処理装置との接続が確立している他の端末装置に前記メッセージを送信するとともに、該情報処理装置との接続が確立している他の情報処理装置に前記メッセージを送信し、他の情報処理装置との接続が確立している端末装置から送信されたメッセージを前記他の情報処理装置から受信した場合、前記メッセージを送信した端末装置と同一のグループに属し、該情報処理装置との接続が確立している端末装置に前記メッセージを送信する。
【発明の効果】
【０００８】
１つの側面として、異なる情報処理装置に接続された端末装置間でのメッセージングを実現することができる。
【図面の簡単な説明】
【０００９】
【図１】一実施形態に係るメッセージ配信システムの構成を概略的に示す図である。
【図２】ウェブサーバのハードウェア構成の一例を示す図である。
【図３】ウェブサーバの機能ブロック図である。
【図４】図４（ａ）は、稼働中サーバリストのデータの一例を示す図であり、図４（ｂ）は、グループリストのデータの一例を示す図であり、図４（ｃ）は、接続サーバリストのデータの一例を示す図であり、図４（ｄ）は、接続クライアントリストのデータの一例を示す図である。
【図５】ウェブサーバにより実行される起動時処理のフローチャートである。
【図６】起動時処理を説明するシーケンス図である。
【図７】図７（ａ）〜図７（ｄ）は、起動時処理を説明するための図である。
【図８】ウェブサーバにより実行されるログイン処理のフローチャートである。
【図９】ログイン処理を説明するシーケンス図である。
【図１０】ウェブサーバにより実行されるクライアント装置接続処理のフローチャートである。
【図１１】クライアント装置接続処理を説明するシーケンス図である。
【図１２】図１２（ａ）〜図１２（ｃ）は、クライアント装置接続処理を説明するための図である。
【図１３】ウェブサーバにより実行されるメッセージ配信処理のフローチャートである。
【図１４】メッセージ配信処理を説明するシーケンス図である。
【図１５】図１５（ａ）〜図１５（ｄ）は、メッセージ配信処理を説明するための図（その１）である。
【図１６】図１６（ａ）および図１６（ｂ）は、メッセージ配信処理を説明するための図（その２）である。
【図１７】ウェブサーバにより実行されるサーバ情報削除処理のフローチャートである。
【図１８】サーバ情報削除処理を説明するシーケンス図である。
【図１９】図１９（ａ）〜図１９（ｆ）は、サーバ情報削除処理を説明するための図である。
【発明を実施するための形態】
【００１０】
以下、メッセージ配信システムの一実施形態について、図１〜図１９に基づいて詳細に説明する。
【００１１】
図１には、一実施形態にかかるメッセージ配信システム１００の構成が概略的に示されている。メッセージ配信システム１００は、端末装置としてのクライアント装置５０−１〜５０−ｎと、負荷分散装置１０と、情報管理装置２０と、メッセージ配信装置としての複数のウェブサーバ３０−１〜３０−ｎと、を含む。クライアント装置５０−１〜５０−ｎと、負荷分散装置１０とは、インターネット等のネットワーク８０を介して接続されている。負荷分散装置１０、情報管理装置２０、およびウェブサーバ３０−１〜３０−ｎは、ＬＡＮ（Local Area Network）等のネットワーク４０を介して接続されている。なお、以後の説明において、特に区別する必要のない限り、ウェブサーバ３０−１〜３０−ｎをウェブサーバ３０と記載し、クライアント装置５０−１〜５０−ｎをクライアント装置５０と記載する。また、ウェブサーバを単にサーバと記載する場合がある。
【００１２】
メッセージ配信システム１００において、クライアント装置５０は、ウェブサーバ３０により提供されるウェブサービスを利用するユーザが使用する端末である。クライアント装置５０は、例えば、パーソナルコンピュータや、タブレット型端末や、スマートフォンである。ユーザは、クライアント装置５０を用いてウェブサービスを利用し、他のユーザにメッセージを送信したり、他のユーザからメッセージを受信したりする。
【００１３】
負荷分散装置１０は、ウェブサーバ３０−１〜３０−ｎの間で負荷を平準化して特定のウェブサーバへのトラフィックの集中を回避する。負荷分散装置１０は、各ウェブサーバの負荷状況に応じて、クライアント装置５０−１〜５０−ｎを複数のウェブサーバ３０−１〜３０−ｎに分散して割り当てる。
【００１４】
情報管理装置２０は、ウェブサーバ３０−１〜３０−ｎがアクセス可能なデータベースサーバやストレージである。情報管理装置２０は、稼働中サーバリストを用いて、複数のウェブサーバ３０−１〜３０−ｎのうち稼働中のウェブサーバの情報を管理する。また、情報管理装置２０は、グループリストを用いて、ユーザが作成したグループの情報を管理する。
【００１５】
ここで、図４（ａ）を参照して、稼働中サーバリストについて説明する。図４（ａ）には、稼働中サーバリストのデータの一例が示されている。稼働中サーバリストは、ウェブサーバ３０−１〜３０−ｎのうち稼働中のウェブサーバのＩＰアドレスを管理するリストであり、図４（ａ）に示すように、ＩＰアドレスのフィールドを備える。ＩＰアドレスのフィールドには、起動したウェブサーバ３０から受信したＩＰアドレスの情報が格納される。なお、稼働中サーバリストのデータ構成は、図４（ａ）に限られるものではない。例えば、稼働中サーバリストは、ウェブサーバ３０の名称を格納するフィールドや、起動日時の情報を格納するフィールドを備えていてもよい。
【００１６】
次に、図４（ｂ）を参照して、グループリストについて説明する。図４（ｂ）には、グループリストのデータの一例が示されている。グループリストは、クライアント装置５０のユーザにより作成されたグループを管理するためのリストである。グループリストは、図４（ｂ）に示すように、ｇｒｏｕｐＩＤおよびｇｒｏｕｐＮａｍｅなどのフィールドを備える。ｇｒｏｕｐＩＤのフィールドには、グループを一意に識別するための識別番号が格納される。ｇｒｏｕｐＮａｍｅのフィールドには、グループの名称が格納される。ユーザは、グループリストに登録されているグループのいずれかに参加することで、同一グループ内の他のユーザにメッセージを送信したり、他のユーザからメッセージを受信したりすることができる。
【００１７】
図１に戻り、ウェブサーバ３０は、ユーザにウェブサービスを提供するためのサーバである。ウェブサーバ３０は、図２に示すようなハードウェア構成を有する。具体的には、ウェブサーバ３０は、図２に示すように、ＣＰＵ（Central Processing Unit）３１１、ＲＯＭ(Read Only Memory)３１２、ＲＡＭ(Random Access Memory)３１３、記憶装置（ＨＤＤ：Hard Disk Drive）３１４、ネットワークインタフェース３１５、及び可搬型記憶媒体３１６に記憶されたデータを読み取り可能な可搬型記憶媒体用ドライブ３１７等を備えている。これらウェブサーバ３０の構成各部は、バス３１８に接続されている。ＣＰＵ３１１は、ＲＯＭ３１２あるいはＨＤＤ３１４に格納されているプログラム（メッセージ配信プログラムを含む）、或いは可搬型記憶媒体用ドライブ３１７が可搬型記憶媒体３１６から読み取ったプログラムを実行することで、ウェブサーバ３０を図３の各部として機能させる。
【００１８】
具体的には、図３に示すように、ＣＰＵ３１１がプログラムを実行することにより、ウェブサーバ３０は、接続管理部３３、受信部３１、および送信部３２として機能する。
【００１９】
接続管理部３３は、ウェブサーバ３０とクライアント装置５０との接続、および他のウェブサーバ３０との接続を管理する。接続管理部３３は、他のウェブサーバ３０とＷｅｂｓｏｃｋｅｔによる接続が確立した場合、接続サーバリストを更新する。また、接続管理部３３は、他のウェブサーバ３０へのメッセージの送信に失敗した場合や、他のウェブサーバ３０との接続が切断した場合に、接続サーバリストを更新する。さらに、接続管理部３３は、クライアント装置５０とＷｅｂｓｏｃｋｅｔによる接続が確立すると接続クライアントリストを更新する。
【００２０】
ここで、図４（ｃ）を参照して、接続サーバリストについて説明する。図４（ｃ）には、接続サーバリストのデータの一例が示されている。接続サーバリストは、ウェブサーバ３０とＷｅｂｓｏｃｋｅｔによる接続が確立している他のウェブサーバ３０の一覧であり、図４（ｃ）に示すように、ＩＰアドレスのフィールドを備える。ＩＰアドレスのフィールドには、Ｗｅｂｓｏｃｋｅｔによる接続が確立した際に他のウェブサーバ３０から受信するＩＰアドレスの情報が格納される。なお、接続サーバリストのデータ構成は、図４（ｃ）に限られるものではない。例えば、接続サーバリストは、ウェブサーバ３０の名称を格納するフィールドや、接続が確立された日時の情報を格納するフィールドを備えていてもよい。
【００２１】
次に、図４（ｄ）を参照して、接続クライアントリストについて説明する。図４（ｄ）には、接続クライアントリストのデータの一例が示されている。接続クライアントリストは、ウェブサーバ３０とＷｅｂｓｏｃｋｅｔによる接続が確立しているクライアント装置５０の一覧であり、図４（ｄ）に示すように、ｕｓｅｒＩＤおよびｇｒｏｕｐＩＤのフィールドを備える。ｕｓｅｒＩＤのフィールドには、ウェブサーバ３０とＷｅｂｓｏｃｋｅｔによる接続が確立しているクライアント装置５０のユーザを一意に識別するための識別子が格納される。ｇｒｏｕｐＩＤのフィールドには、ｕｓｅｒＩＤにより識別されるユーザが参加しているグループのｇｒｏｕｐＩＤ（図４（ｂ）参照）の情報が格納される。
【００２２】
図３に戻り、受信部３１は、ウェブサーバ３０に割り当てられたクライアント装置５０からログイン情報、グループ作成要求、およびグループ検索要求等を受信する。また、受信部３１は、クライアント装置５０からメッセージを含むメッセージ情報を受信する。さらに、受信部３１は、情報管理装置２０から、稼働中サーバリストや、グループリストの検索結果等を受信する。
【００２３】
送信部３２は、ウェブサーバ３０の起動時に、自サーバの情報を情報管理装置２０に送信する。また、送信部３２は、受信部３１がクライアント装置５０からグループ作成要求を受信した場合、グループ情報を作成し、情報管理装置２０に送信する。さらに、送信部３２は、受信部３１がクライアント装置５０からメッセージ情報を受信した場合、接続サーバリストに基づいて、他のウェブサーバ３０にメッセージ情報を送信（転送）する。また、送信部３２は、接続クライアントリストに基づいて、クライアント装置５０にメッセージを送信（転送）する。
【００２４】
次に、ウェブサーバ３０において実行される各処理について説明する。
【００２５】
（起動時処理）
まず、ウェブサーバ３０が起動すると実行される起動時処理について説明する。起動時処理は、Ｗｅｂｓｏｃｋｅｔにより自サーバと他サーバとの接続を確立するための処理である。図５には、ウェブサーバ３０により実行される起動時処理のフローチャートが示されている。
【００２６】
図５の処理では、まず、ステップＳ１１において、ウェブサーバ３０の送信部３２が、自サーバの情報を情報管理装置２０に送信する。本実施形態では、送信部３２は、ウェブサーバ３０のＩＰアドレスの情報を情報管理装置２０に送信する。なお、ウェブサーバ３０からＩＰアドレスの情報を受信した情報管理装置２０は、稼働中サーバリスト（図４（ａ）参照）に当該ＩＰアドレスを追加し、稼働中サーバリストをウェブサーバ３０に送信する。
【００２７】
続くステップＳ１２において、受信部３１は、稼働中サーバリストを情報管理装置２０から受信する。
【００２８】
続くステップＳ１３において、接続管理部３３は、稼働中サーバリストを参照し自サーバ以外に稼働中のサーバが存在するか否かを判断する。具体的には、接続管理部３３は、稼働中サーバリストに自サーバ以外のＩＰアドレスが存在するか否かを判断する。ここでの判断が否定された場合、自サーバ以外に稼動しているサーバが存在しないため、ウェブサーバ３０はステップＳ１６に移行する。一方、自サーバ以外に稼働中のサーバが存在する場合、ステップＳ１３の判断が肯定され、ステップＳ１４に移行する。
【００２９】
ステップＳ１４に移行すると、接続管理部３３は、Ｗｅｂｓｏｃｋｅｔにより稼働中の他のウェブサーバ３０との接続を確立し、接続サーバリストを更新する。具体的には、接続管理部３３は、接続を確立したウェブサーバ３０のＩＰアドレスの情報を接続サーバリスト（図４（ｃ）参照）に格納する。
【００３０】
続くステップＳ１６において、受信部３１は、他のウェブサーバ３０からＷｅｂｓｏｃｋｅｔによる接続要求を受信するまで待機する。そして、他のウェブサーバ３０から接続要求を受信すると、ステップＳ１６の判断が肯定され、ステップＳ１７に移行する。
【００３１】
ステップＳ１７に移行すると、接続管理部３３は、接続サーバリストを更新する。具体的には、接続管理部３３は、接続要求を送信した他のウェブサーバ３０の情報を、接続サーバリストに追加する。
【００３２】
続くステップＳ１８において、接続管理部３３は、他のウェブサーバ３０からの接続要求に応答する。これにより、他のウェブサーバ３０との間で、Ｗｅｂｓｏｃｋｅｔによる接続が確立する。ステップＳ１８の処理後は、ステップＳ１６に戻る。ステップＳ１６〜Ｓ１８の処理は、ウェブサーバ３０が稼動している間、繰り返し実行される。
【００３３】
ここで、ウェブサーバ３０−１およびウェブサーバ３０−２がそれぞれ起動した場合を例として、各装置が実行する処理について、図６のシーケンス図を用いて具体的に説明する。
【００３４】
図６において、ウェブサーバ３０−１は起動すると（ステップＳ２１）、自サーバの情報を情報管理装置２０に送信する（ステップＳ２３、図５：Ｓ１１）。
【００３５】
情報管理装置２０は、ウェブサーバ３０−１からサーバ情報を受信すると、稼働中サーバリストに、受信したサーバ情報を登録する（ステップＳ２５）。例えば、ウェブサーバ３０−１のＩＰアドレスが、“１９２．１６８．ｘ．ｘ”である場合、情報管理装置２０は、図７（ａ）に示すように、稼働中サーバリストに、ＩＰアドレス“１９２．１６８．ｘ．ｘ”を登録する。
【００３６】
情報管理装置２０は、図７（ａ）の稼働中サーバリストをウェブサーバ３０−１に送信する（ステップＳ２７、図５：Ｓ１２）。
【００３７】
続いて、ウェブサーバ３０−２は起動すると（ステップＳ２９）、自サーバの情報を情報管理装置２０に送信する（ステップＳ３１、図５：Ｓ１１）。
【００３８】
情報管理装置２０は、ウェブサーバ３０−２からサーバ情報を受信すると、稼働中サーバリストに、受信したサーバ情報を登録する（ステップＳ３３）。例えば、ウェブサーバ３０−２のＩＰアドレスが、“１９２．１６８．ｘ．ｙ”である場合、情報管理装置２０は、図７（ｂ）に示すように、稼働中サーバリストに、ＩＰアドレス“１９２．１６８．ｘ．ｙ”を登録する。
【００３９】
情報管理装置２０は、図７（ｂ）の稼働中サーバリストをウェブサーバ３０−２に送信する（ステップＳ３５、図５：Ｓ１２）。
【００４０】
ここで、図７（ｂ）の稼働中サーバリストには、ウェブサーバ３０−２以外のＩＰアドレス“１９２．１６８．ｘ．ｘ”が含まれている（図５：Ｓ１３／ＹＥＳ）。したがって、ウェブサーバ３０−２は、稼働中のウェブサーバ３０−１にＷｅｂｓｏｃｋｅｔによる接続を要求する（ステップＳ３６、図５：Ｓ１４）。
【００４１】
ウェブサーバ３０−１は、ウェブサーバ３０−２から接続要求を受信すると（図５：Ｓ１６／ＹＥＳ）、接続サーバリストを更新する（ステップＳ３７、図５：Ｓ１７）。具体的には、ウェブサーバ３０−１の接続管理部３３は、図７（ｃ）に示すように、接続サーバリストに、ウェブサーバ３０−２のＩＰアドレスを追加する。
【００４２】
その後、ウェブサーバ３０−１は、ウェブサーバ３０−２からの接続要求に応答する（ステップＳ３８、図５：Ｓ１８）。これにより、ウェブサーバ３０−１とウェブサーバ３０−２との間で、Ｗｅｂｓｏｃｋｅｔによる接続が確立される。
【００４３】
ウェブサーバ３０−１との接続が確立されると、ウェブサーバ３０−２は、接続サーバリストを更新する（ステップＳ３９、図５：Ｓ１４）。具体的には、ウェブサーバ３０−２の接続管理部３３は、図７（ｄ）に示すように、接続サーバリストにウェブサーバ３０−１のＩＰアドレスを追加する。ウェブサーバ３０−１のＩＰアドレスの情報は、図７（ｂ）に示す稼働中サーバリストから取得すればよい。
【００４４】
以上の処理により、ウェブサーバ３０−１とウェブサーバ３０−２との間にはＷｅｂｓｏｃｋｅｔによる接続が確立され、双方向通信が可能となる。
【００４５】
（ログイン処理）
次に、図８のフローチャートを参照して、ユーザがウェブサービスにログインする場合にウェブサーバ３０により実行されるログイン処理について説明する。
【００４６】
図８の処理では、ステップＳ４１において、ウェブサーバ３０の受信部３１は、クライアント装置５０からログイン情報を受信するまで待機している。本実施形態では、ログイン情報は、クライアント装置５０のユーザがウェブサービスを利用するためのユーザＩＤと、パスワードとを含む。そして、クライアント装置５０からログイン情報を受信した時点で、ステップＳ４１の判断が肯定され、ステップＳ４３に移行する。
【００４７】
ステップＳ４３に移行すると、接続管理部３３は、ログイン情報が正しいか否かを判断する。具体的には、接続管理部３３は、ユーザＩＤとパスワードとの組み合わせが正しいか否かを判断する。そして、ログイン情報が正しい場合には、ステップＳ４５に移行し、ユーザにウェブサービスへのログインを許可する。一方、ログイン情報が正しくない場合には、ステップＳ４７に移行し、ユーザにログイン情報が正しくない旨を通知する。
【００４８】
図８の処理は、ウェブサーバ３０が稼動している間、繰り返し実行される。
【００４９】
ここで、クライアント装置５０−１のユーザとクライアント装置５０−２のユーザとがウェブサービスにログインする場合を例として、各装置が実行する処理について、図９のシーケンス図を用いて具体的に説明する。なお、以後の説明において、クライアント装置５０−１のユーザをユーザＡ、クライアント装置５０−２のユーザをユーザＢとする。
【００５０】
図９では、クライアント装置５０−１においてユーザＡがウェブサービスにログインを試みる（ステップＳ５１）。このとき、負荷分散装置１０は、各ウェブサーバ３０の負荷状況に基づいて、例えば、ウェブサーバ３０−１にクライアント装置５０−１を割り当てる。クライアント装置５０−１は、割り当てられたウェブサーバ３０−１にログイン情報を送信する（ステップＳ５３）。ウェブサーバ３０−１は、ログイン情報を受信すると（図８：Ｓ４１／ＹＥＳ）、ログイン処理を実行する（ステップＳ５５、図８：Ｓ４３〜Ｓ４７）。
【００５１】
また、クライアント装置５０−２においてユーザＢがウェブサービスにログインを試みる（ステップＳ５７）。このとき、負荷分散装置１０は、各ウェブサーバ３０の負荷状況に基づいて、例えば、ウェブサーバ３０−２にクライアント装置５０−２を割り当てる。クライアント装置５０−２は、割り当てられたウェブサーバ３０−２にログイン情報を送信する（ステップＳ５９）。ウェブサーバ３０−２は、ログイン情報を受信すると（図８：Ｓ４１／ＹＥＳ）、ログイン処理を実行する（ステップＳ６１、図８：ステップＳ４３〜Ｓ４７）。
【００５２】
これにより、クライアント装置５０−１，５０−２のユーザＡ，Ｂは、ウェブサーバ３０が提供するウェブサービスを利用できるようになる。
【００５３】
（クライアント装置接続処理）
次に、図１０のフローチャートを参照して、ウェブサーバ３０により実行されるクライアント装置接続処理について説明する。クライアント装置接続処理は、ウェブサーバ３０とクライアント装置５０との間でＷｅｂｓｏｃｋｅｔによる接続を確立する処理である。
【００５４】
図１０の処理では、まず、ステップＳ７１において、受信部３１は、クライアント装置５０からグループの作成を要求するグループ作成要求を受信したか否かを判断する。本実施形態では、グループ作成要求は、グループの名称を含む。ここでの判断が肯定された場合、ステップＳ７３に移行する。
【００５５】
ステップＳ７３に移行すると、送信部３２が、グループ情報を作成する。本実施形態では、送信部３２は、作成要求を受けたグループを一意に識別するｇｒｏｕｐＩＤを採番し、グループの名称と、ｇｒｏｕｐＩＤとを含むグループ情報を作成する。
【００５６】
続くステップＳ７５において、送信部３２は、作成したグループ情報を情報管理装置２０に送信する。
【００５７】
続くステップＳ７７において、受信部３１は、グループの登録結果を情報管理装置２０から受信する。本実施形態では、ウェブサーバ３０は、グループの登録結果として、情報管理装置２０のグループリストに登録されたグループの名称（ｇｒｏｕｐＮａｍｅ）と、ｇｒｏｕｐＩＤとを受信する。なお、本実施形態において、ステップＳ７３にて送信部３２が採番したｇｒｏｕｐＩＤが、情報管理装置２０が管理するグループリスト（図４（ｂ）参照）に既に登録済みであった場合には、情報管理装置２０が新たにｇｒｏｕｐＩＤを採番する。したがって、ステップＳ７３のグループ情報に含まれるｇｒｏｕｐＩＤと、ステップＳ７７で受信するｇｒｏｕｐＩＤとは異なる場合がある。なお、ウェブサーバ３０の送信部３２ではなく、情報管理装置２０がｇｒｏｕｐＩＤの採番を行うようにしてもよい。
【００５８】
続くステップＳ７９において、送信部３２は、ステップＳ７７で受信したグループの名称と、ｇｒｏｕｐＩＤとを含むグループ情報をクライアント装置５０に送信する。
【００５９】
続くステップＳ８１において、接続管理部３３は、グループへの接続を要求するグループ接続要求をクライアント装置５０から受信したか否かを判断する。グループ接続要求を受信していない場合、ステップＳ７１に戻る。グループ接続要求を受信した場合、ステップＳ８１の判断が肯定され、ステップＳ８３に移行する。
【００６０】
ステップＳ８３に移行すると、接続管理部３３は、Ｗｅｂｓｏｃｋｅｔにてクライアント装置５０との接続を確立し、接続クライアントリストを更新する。
【００６１】
ところで、グループ作成要求を受信していない場合、ステップＳ７１の判断が否定され、受信部３１は、ステップＳ８５に移行する。
【００６２】
ステップＳ８５に移行すると、受信部３１は、グループの検索を要求するグループ検索要求を受信したか否かを判断する。グループ検索要求は、グループを検索するための検索条件を含む。グループ検索要求を受信していない場合、ステップＳ８１に移行するが、受信した場合、ステップＳ８７に移行する。
【００６３】
ステップＳ８７に移行すると、送信部３２は、検索条件に基づいて情報管理装置２０のグループリストを検索する。
【００６４】
続くステップＳ８９において、受信部３１は、情報管理装置２０からグループ検索結果を受信する。
【００６５】
続くステップＳ９１において、送信部３２が、クライアント装置５０にグループ検索結果を送信する。グループ検索結果を受信したクライアント装置５０は、クライアント装置５０の表示画面に検索結果を表示する。これにより、ユーザは、検索結果に自分が参加したいグループが含まれる場合には、当該グループへの接続をウェブサーバ３０に要求することができる。なお、ステップＳ８１以降の処理は前述したとおりであるため、説明を省略する。
【００６６】
図１０の処理は、ウェブサーバ３０が稼働している間、繰り返し実行される。
【００６７】
ここで、クライアント装置５０−１のユーザＡおよびクライアント装置５０−２のユーザＢがグループに参加する場合を例として、各装置が実行する処理について、図１１のシーケンス図を用いて具体的に説明する。なお、情報管理装置２０のグループリストにはデータが登録されていないものとする。また、ユーザＡのｕｓｅｒＩＤを“ｕｓｅｒＡ”、ユーザＢのｕｓｅｒＩＤを“ｕｓｅｒＢ”とする。
【００６８】
図１１において、クライアント装置５０−１のユーザＡは、クライアント装置５０−１においてグループを作成する操作を行う（ステップＳ１０１）。一例として、ユーザＡが、“ＡＡ検討”という名称のグループを作成する操作を行ったとする。クライアント装置５０−１は、グループの名称“ＡＡ検討”を含むグループ作成要求をウェブサーバ３０−１に送信する（ステップＳ１０３）。
【００６９】
ウェブサーバ３０−１は、グループ作成要求を受信すると（図１０：Ｓ７１／ＹＥＳ）、グループ情報を作成する（ステップＳ１０５、図１０：Ｓ７３）。例えば、ウェブサーバ３０−１は、グループ名称“ＡＡ検討”に対して、ｇｒｏｕｐＩＤ“０００１”を採番する。そして、ウェブサーバ３０−１は、グループ名称“ＡＡ検討”と、ｇｒｏｕｐＩＤ“０００１”とを含むグループ情報を作成する。
【００７０】
ウェブサーバ３０−１は、作成したグループ情報を情報管理装置２０に送信する（ステップＳ１０７、図１０：Ｓ７５）。グループ情報を受信した情報管理装置２０は、例えば、図１２（ａ）に示すように、グループ情報をグループリストに登録する（ステップＳ１０９）。
【００７１】
情報管理装置２０は、グループ情報をグループリストに登録すると、登録結果をウェブサーバ３０−１に送信する（ステップＳ１１１）。ウェブサーバ３０−１は、情報管理装置２０から登録結果を受信すると（図１０：Ｓ７７）、グループ情報をクライアント装置５０−１に送信する（ステップＳ１１３、図１０：Ｓ７９）。
【００７２】
クライアント装置５０−１のユーザＡが、グループに参加する操作をクライアント装置５０−１上で行うと（ステップＳ１１５）、クライアント装置５０−１は、グループ接続要求をウェブサーバ３０−１に送信する（ステップＳ１１７）。ここでは、ユーザＡが、ｇｒｏｕｐＩＤ“０００１”で識別されるグループに参加する操作を行ったとする。
【００７３】
ウェブサーバ３０−１は、クライアント装置５０−１からグループ接続要求を受信すると（図１０：Ｓ８１／ＹＥＳ）、クライアント装置５０−１からの接続要求に応答する（ステップＳ１１９、図１０：Ｓ８３）。これにより、クライアント装置５０−１とウェブサーバ３０−１との間でＷｅｂｓｏｃｋｅｔによる接続が確立し、双方向通信が可能となる。ウェブサーバ３０−１は、接続クライアントリストを、例えば、図１２（ｂ）に示すように更新する（ステップＳ１２０、図１０：Ｓ８３）。
【００７４】
一方、クライアント装置５０−２のユーザＢが、グループを検索する操作をクライアント装置５０−２で行うと（ステップＳ１２１）、クライアント装置５０−２は、グループ検索要求をウェブサーバ３０−２に送信する（ステップＳ１２３）。
【００７５】
ウェブサーバ３０−２は、グループ検索要求を受信すると（図１０：Ｓ８５／ＹＥＳ）、情報管理装置２０に登録されているグループリスト（図１２（ａ））を検索条件に基づいて検索する（ステップＳ１２５、図１０：Ｓ８７）。情報管理装置２０は、検索結果をウェブサーバ３０−２に送信する（ステップＳ１２７）。
【００７６】
ウェブサーバ３０−２は、検索結果を受信すると（図１０：Ｓ８９）、検索結果をクライアント装置５０−２に送信する（ステップＳ１２９、図１０：Ｓ９１）。
【００７７】
クライアント装置５０−２のユーザＢは、検索結果の中から参加したいグループを指定し、グループに参加する操作をクライアント装置５０−２上で行う（ステップＳ１３１）。クライアント装置５０−２は、ユーザＢが指定したグループへの接続要求をウェブサーバ３０−２に送信する（ステップＳ１３３）。ここでは、ユーザＢがｇｒｏｕｐＩＤ“０００１”のグループに参加する操作を行ったとする。
【００７８】
ウェブサーバ３０−２は、クライアント装置５０−２からグループ接続要求を受信すると（図１０：Ｓ８１／ＹＥＳ）、クライアント装置５０−２からの接続要求に応答する（ステップＳ１３５、図１０：Ｓ８３）。これにより、クライアント装置５０−２とウェブサーバ３０−２との間で、Ｗｅｂｓｏｃｋｅｔによる接続が確立し、双方向通信が可能となる。ウェブサーバ３０−２は、図１２（ｃ）に示すように、接続クライアントリストを更新する（ステップＳ１３６、図１０：Ｓ８３）。
【００７９】
（メッセージ配信処理）
次に、図１３のフローチャートを参照して、ウェブサーバ３０により実行されるメッセージ配信処理について説明する。メッセージ配信処理は、ユーザから送信されたメッセージを、当該ユーザと同一のグループに属する他のユーザに配信する処理である。
【００８０】
図１３の処理では、ステップＳ２０１において、受信部３１は、クライアント装置５０からメッセージ情報を受信するまで待機している。そして、受信部３１がメッセージ情報を受信すると、ステップＳ２０１の判断が肯定され、ステップＳ２０５に移行する。なお、本実施形態において、メッセージ情報は、メッセージの送信者が参加しているグループの情報と、メッセージとを含む。
【００８１】
ステップＳ２０５に移行すると、送信部３２は、自サーバとＷｅｂｓｏｃｋｅｔにて接続が確立しているクライアント装置５０から、メッセージの転送対象となるクライアント装置５０を特定する。具体的には、送信部３２は、接続クライアントリストにおいて、メッセージを送信したクライアント装置５０のユーザと同一のグループに属するユーザを特定する。
【００８２】
続くステップＳ２０７において、送信部３２は、特定したクライアント装置５０にメッセージを転送し、ステップＳ２０８に移行する。
【００８３】
ステップＳ２０８に移行すると、送信部３２は、受信したメッセージ情報にサーバ転送フラグが付加されているか否かを判断する。ここで、サーバ転送フラグとは、当該メッセージ情報がクライアント装置５０ではなくウェブサーバ３０から転送されてきたメッセージ情報であること示すフラグであり、メッセージ情報がウェブサーバ３０間で巡回するのを防ぐために使用される。メッセージ情報にサーバ転送フラグが付加されている場合、ステップＳ２０８の判断が肯定され、ステップＳ２０１に戻る。一方、メッセージ情報にサーバ転送フラグが付加されていない場合、ステップＳ２０８の判断が否定され、ステップＳ２０９に移行する。
【００８４】
ステップＳ２０９に移行すると、送信部３２は、サーバ転送フラグを付加したメッセージ情報を、他のウェブサーバ３０に送信する。具体的には、送信部３２は、接続サーバリストに基づいて、自装置とＷｅｂｓｏｃｋｅｔにて接続が確立しているウェブサーバ３０にサーバ転送フラグを付加したメッセージ情報を送信する。ステップＳ２０９の処理を終了すると、ステップＳ２０１に戻る。
【００８５】
図１３の処理は、ウェブサーバ３０が稼働している間、繰り返し実行される。
【００８６】
ここで、クライアント装置５０−１のユーザＡがメッセージを送信する場合を例として、各装置が実行する処理について、図１４のシーケンス図を用いて説明する。なお、ウェブサーバ３０−１には、図１５（ａ）に示す接続サーバリストと、図１５（ｂ）に示す接続クライアントリストとが登録されているものとする。また、ウェブサーバ３０−２には、図１５（ｃ）に示す接続サーバリストと、図１５（ｄ）に示す接続クライアントリストとが登録されているものとする。また、ウェブサーバ３０−１のＩＰアドレスは、“１９２．１６８．ｘ．ｘ．”であり、ウェブサーバ３０−２のＩＰアドレスは、“１９２．１６８．ｘ．ｙ”であるものとする。また、ユーザＡのｕｓｅｒＩＤは“ｕｓｅｒＡ”であり、ユーザＢのｕｓｅｒＩＤは“ｕｓｅｒＢ”であるものとする。
【００８７】
図１４において、クライアント装置５０−１のユーザＡが、メッセージ送信処理を行うと（ステップＳ１５１）、クライアント装置５０−１は、メッセージ情報をウェブサーバ３０−１に送信する（ステップＳ１５３）。ここで、ユーザＡが、“状況を教えてください”とのメッセージを送信したとする。この場合、クライアント装置５０−１は、図１６（ａ）に示すように、ユーザＡが参加するグループのｇｒｏｕｐＩＤ“０００１”と、メッセージ（ｍｅｓｓａｇｅ）“状況を教えてください”とを含むメッセージ情報をウェブサーバ３０−１に送信する。なお、クライアント装置５０−１から送信されたメッセージ情報には、サーバ転送フラグが付加されていない。
【００８８】
ウェブサーバ３０−１は、メッセージ情報を受信すると（図１３：Ｓ２０１／ＹＥＳ）、メッセージを転送するクライアント装置５０を特定する（ステップＳ１５５、図１３：Ｓ２０５）。ウェブサーバ３０−１は、図１５（ｂ）の接続クライアントリストから、図１６（ａ）のメッセージ情報に含まれるｇｒｏｕｐＩＤ“０００１”で識別されるグループに属するユーザを特定する。図１５（ｂ）の接続クライアントリストにおいて、ｇｒｏｕｐＩＤ“０００１”で識別されるグループに属するユーザは、ｕｓｅｒＩＤが“ｕｓｅｒＡ”、“ｕｓｅｒＣ”および“ｕｓｅｒＹ”のユーザである。したがって、ウェブサーバ３０−１は、ｕｓｅｒＩＤが“ｕｓｅｒＡ”、“ｕｓｅｒＣ”および“ｕｓｅｒＹ”のユーザのクライアント装置５０をメッセージの転送対象として特定する。
【００８９】
ウェブサーバ３０−１は、特定したクライアント装置５０にメッセージを送信する（ステップＳ１５７、図１３：Ｓ２０７）。具体的には、ウェブサーバ３０−１は、ｕｓｅｒＩＤが“ｕｓｅｒＡ”、“ｕｓｅｒＣ”および“ｕｓｅｒＹ”のユーザのクライアント装置５０にメッセージ情報に含まれるメッセージ“状況を教えてください”を送信する。
【００９０】
上述したように、クライアント装置５０−１から送信されたメッセージ情報には、サーバ転送フラグが付加されていない（図１３：Ｓ２０８／ＮＯ）。したがって、ウェブサーバ３０−１は、図１５（ａ）に示す接続サーバリストに存在するウェブサーバ３０−２に、図１６（ｂ）に示すように、サーバ転送フラグ（ｆｏｒｗａｒｄＦｌａｇ）を付加したメッセージ情報を送信する（ステップＳ１５９、図１３：Ｓ２０９）。
【００９１】
ウェブサーバ３０−２は、メッセージ情報を受信すると（図１３：Ｓ２０１／ＹＥＳ）、メッセージを転送するクライアント装置５０を特定する（ステップＳ１６１、図１３：Ｓ２０５）。ここで、図１５（ｄ）の接続クライアントリストによれば、メッセージ情報に含まれるｇｒｏｕｐＩＤ“０００１”で識別されるグループに属するユーザは、ｕｓｅｒＩＤが“ｕｓｅｒＢ”のユーザＢである。したがって、ウェブサーバ３０−２は、ユーザＢのクライアント装置５０−２を、メッセージの転送対象として特定する。
【００９２】
ウェブサーバ３０−２は、特定されたクライアント装置５０−２にメッセージを転送する（ステップＳ１６５、図１３：Ｓ２０７）。メッセージを受信したクライアント装置５０−２は、メッセージを表示する（ステップＳ１６７）。これにより、ユーザＡのクライアント装置５０−１が接続されたウェブサーバ３０−１とは異なるウェブサーバ３０−２に接続されたクライアント装置５０−２のユーザＢは、ユーザＡからのメッセージを確認することができる。なお、上述したように、ウェブサーバ３０−２が受信したメッセージ情報にはサーバ転送フラグが付加されているため（図１３：Ｓ２０８／ＹＥＳ）、ウェブサーバ３０−２は、メッセージ情報を他のウェブサーバ３０に送信しない。
【００９３】
複数のウェブサーバにより負荷分散を行っている従来のシステムでは、各ウェブサーバは、他のウェブサーバに接続されているクライアント装置の情報を持っていない。また、一般的に、負荷分散は負荷分散装置が自動的に行うため、ユーザのクライアント装置が接続されているウェブサーバに、メッセージの送信対象となるユーザのクライアント装置が接続されているとは限らない。したがって、複数のウェブサーバにより負荷分散を行っているシステムが本実施形態の構成を有さない場合、メッセージの送信元のクライアント装置が接続されているウェブサーバとは異なるウェブサーバに接続され、かつ、送信元のクライアント装置と同一のグループに属するクライアント装置に、メッセージを送信することができない。
【００９４】
一方、本実施形態では、図１４〜図１６を用いて説明したように、ウェブサーバ３０−１に接続しているクライアント装置５０−１からのメッセージを、他のウェブサーバ３０−２に接続し、かつ、クライアント装置５０−１と同一のグループに属するクライアント装置５０−２に送信することができる。
【００９５】
（サーバ情報削除処理）
次に、図１７のフローチャートを参照して、ウェブサーバ３０において実行されるサーバ情報削除処理について説明する。サーバ情報削除処理は、応答がない、あるいは、停止したウェブサーバ３０の情報を接続サーバリストや、情報管理装置２０の稼働中サーバリストから削除するための処理である。
【００９６】
図１７の処理では、ステップＳ３０１において、送信部３２は、メッセージの送信に失敗したウェブサーバ３０が存在するか否かを判断する。ここでの判断が肯定された場合、ステップＳ３０３に移行する。
【００９７】
ステップＳ３０３に移行すると、接続管理部３３は、メッセージの送信に失敗したウェブサーバ３０を接続サーバリストから削除する。
【００９８】
ところで、メッセージの送信に失敗したウェブサーバ３０が存在しなかった場合、ステップＳ３０１の判断が否定され、ステップＳ３０５に移行する。
【００９９】
ステップＳ３０５に移行すると、接続管理部３３は、他のウェブサーバ３０との接続（コネクション）の切断を検出したか否かを判断する。ここでの判断が否定された場合、ステップＳ３０１に戻るが、肯定された場合、ステップＳ３０７に移行する。
【０１００】
ステップＳ３０７に移行すると、接続管理部３３は、接続の切断を検出したウェブサーバ３０を、接続サーバリストから削除する。
【０１０１】
ステップＳ３０３、または、ステップＳ３０７の処理後は、ステップＳ３０９に移行する。
【０１０２】
ステップＳ３０９に移行すると、送信部３２は、削除したサーバの情報を、情報管理装置２０に送信する。これにより、情報管理装置２０は、稼働中サーバリストから、当該サーバを削除することができる。
【０１０３】
ステップＳ３０９の処理後は、ステップＳ３０１に戻る。図１７の処理は、ウェブサーバ３０が稼働している間、繰り返し実行される。なお、図１７において、ステップＳ３０３の処理と、ステップＳ３０９の処理とは、実行順序が入れ替わってもよい。また、ステップＳ３０７の処理と、ステップＳ３０９の処理とは、実行順序が入れ替わってもよい。
【０１０４】
ここで、ウェブサーバ３０−２が応答しない、あるいは、停止した場合を例として、各装置が実行する処理について、図１８（ａ）および図１８（ｂ）のシーケンス図を用いて具体的に説明する。
【０１０５】
まず、ウェブサーバ３０−２が応答しない場合について図１８（ａ）を参照して説明する。なお、ウェブサーバ３０−１には、図１９（ａ）の接続サーバリストが登録されており、ウェブサーバ３０−２には、図１９（ｂ）の接続サーバリストが登録されているものとする。また、情報管理装置２０には、図１９（ｃ）の稼働中サーバリストが登録されているものとする。また、ウェブサーバ３０−１および３０−２のＩＰアドレスは、それぞれ、“１９２．１６８．ｘ．ｘ”、および“１９２．１６８．ｘ．ｙ”であるものとする。
【０１０６】
図１８（ａ）では、ウェブサーバ３０−１が、サーバ転送フラグを付加したメッセージ情報をウェブサーバ３０−２に送信する（ステップＳ３２１）。
【０１０７】
そして、ウェブサーバ３０−１は、ウェブサーバ３０−２に対するメッセージ情報の送信が失敗していることを確認する（ステップＳ３２３、図１７：Ｓ３０１／ＹＥＳ）。この場合、ウェブサーバ３０−１は、図１９（ａ）に示す接続サーバリストから、図１９（ｄ）に示すようにウェブサーバ３０−２のＩＰアドレス（１９２．１６８．ｘ．ｙ）を削除する(ステップＳ３２５、図１７：Ｓ３０３)。これにより、ウェブサーバ３０−１は、メッセージ情報の送信対象から、応答しないウェブサーバ３０−２を除外することができる。すなわち、ウェブサーバ３０−１は、応答しないウェブサーバ３０−２にメッセージ情報を送信しないようにすることができる。
【０１０８】
ウェブサーバ３０−１は、削除したウェブサーバ３０−２の情報を、情報管理装置２０に送信する（ステップＳ３３１、図１７：Ｓ３０９）。情報管理装置２０は、図１９（ｆ）に示すように、稼働中サーバリストから、ウェブサーバ３０−２を削除する（ステップＳ３３３）。これにより、情報管理装置２０は、新たに起動したウェブサーバ３０に、応答しないウェブサーバ３０−２を除いた稼働中サーバリストを送信することができる。
【０１０９】
なお、ウェブサーバ３０−２の接続サーバリストは図１９（ｅ）に示すように更新されず、元の状態（図１９（ｂ））のままである。
【０１１０】
別例として、ウェブサーバ３０−２が停止した場合について、図１８（ｂ）を用いて説明する。
【０１１１】
図１８（ｂ）において、ウェブサーバ３０−２は、停止すると（ステップＳ３３５）、他のウェブサーバ３０との接続を切断する（ステップＳ３３７）。
【０１１２】
ウェブサーバ３０−１は、ウェブサーバ３０−２との接続（コネクション）の切断を検出すると（ステップＳ３３９：図１７：Ｓ３０５／ＹＥＳ）、接続サーバリストからウェブサーバ３０−２を削除する（ステップＳ３４１、図１７：Ｓ３０７）。これにより、ウェブサーバ３０−１は、メッセージ情報の送信対象から、停止したウェブサーバ３０−２を除外することができる。すなわち、ウェブサーバ３０−１は、停止したウェブサーバ３０−２にメッセージ情報を送信しないようにすることができる。
【０１１３】
また、ウェブサーバ３０−１は、削除したウェブサーバ３０−２の情報を、情報管理装置２０に送信する（ステップＳ３４３、図１７：Ｓ３０９）。情報管理装置２０は、稼働中サーバリストから、ウェブサーバ３０−２を削除する（ステップＳ３４５）。これにより、情報管理装置２０は、新たに起動したウェブサーバ３０に、停止したウェブサーバ３０−２を除いた稼働中サーバリストを送信することができる。
【０１１４】
以上、詳細に説明したように、本実施形態によると、メッセージ配信システム１００は、ネットワーク４０に接続された複数のウェブサーバ３０−１〜３０−ｎを備えており、各ウェブサーバ３０は、ウェブサーバ３０との接続が確立しているクライアント装置５０からクライアント装置５０が属するグループの情報を付帯したメッセージ（図１６（ａ））を受信した場合、クライアント装置５０と同一のグループに属し、ウェブサーバ３０との接続が確立している他のクライアント装置５０にメッセージを送信する（図１３：Ｓ２０５，Ｓ２０７、図１４：Ｓ１５５，Ｓ１５７）。さらに、ウェブサーバ３０は、ウェブサーバ３０との接続が確立している他のウェブサーバ３０にメッセージを送信する（図１３：Ｓ２０９、図１４：Ｓ１５９）。また、ウェブサーバ３０は、他のウェブサーバ３０との接続が確立しているクライアント装置５０から送信されたメッセージを他のウェブサーバから受信した場合、メッセージを送信したクライアント装置５０と同一のグループに属し、ウェブサーバ３０との接続が確立しているクライアント装置５０に送信する（図１３：Ｓ２０５，Ｓ２０７、図１４：Ｓ１６１，Ｓ１６５）。これにより、複数のウェブサーバ３０−１〜３０−ｎにより負荷分散を行っているシステムにおいて、例えば、ウェブサーバ３０−１に接続されたクライアント装置５０−１から送信されたメッセージを、ウェブサーバ３０−１とは異なるウェブサーバ３０−２に接続され、かつ、クライアント装置５０−１と同一のグループに属するクライアント装置５０−２に送信することができる。
【０１１５】
また、本実施形態によれば、各ウェブサーバ３０−１〜３０−ｎは、各ウェブサーバとの接続が確立しているクライアント装置５０の情報を個別に管理している（図１５（ｂ）、図１５（ｄ）等参照）。これにより、クライアント装置５０の接続情報を一元管理するサーバ等を設置する必要がない。クライアント装置５０の接続情報を一元管理する場合、接続情報を一元管理するサーバの容量によって、ウェブサービスを利用できる人数が制限されてしまう場合がある。あるいは、ウェブサービスの利用者が増えた場合には、接続情報を一元管理するサーバの容量を大きくしなければ、システムを維持することができない。一方、本実施形態によれば、各ウェブサーバ３０が、各ウェブサーバ３０との接続が確立しているクライアント装置５０の接続情報を個別に管理するため、情報管理装置２０は、稼働中のウェブサーバ３０の情報を管理すればよく、容量が少なくて済む。また、利用者が増えた場合にも、新規にウェブサーバを立てればよいので、システムの拡大も容易になる。
【０１１６】
また、本実施形態において、メッセージ配信システムは、ウェブサーバ３０−１〜３０−ｎのうち稼働中のウェブサーバ３０の情報を管理する情報管理装置２０を備える。ウェブサーバ３０は、メッセージの送信に失敗した、または、接続の切断を検出したウェブサーバ３０の情報を情報管理装置２０に送信する（図１７：Ｓ３０９、図１８（ａ）：Ｓ３３１、図１８（ｂ）：Ｓ３４３）。情報管理装置２０は、稼働中サーバリストから、メッセージの送信に失敗した、または、接続の切断を検出したウェブサーバ３０の情報を削除する（図１８（ａ）：Ｓ３３３、図１８（ｂ）：Ｓ３４５）。これにより、情報管理装置２０は、新たに起動したウェブサーバ３０に、応答しないウェブサーバ３０を除いた稼働中サーバリストを送信することができる。
【０１１７】
また、本実施形態によれば、ウェブサーバ３０−１〜３０−ｎは、自サーバとの接続が確立しているウェブサーバ３０の情報を個別に管理する（図１９（ａ）〜（ｃ）等参照）。各ウェブサーバ３０−１〜３０−ｎは、メッセージの送信に失敗した、または、接続の切断を検出したウェブサーバ３０の情報を個別に管理しているウェブサーバ３０の情報（接続サーバリスト）から削除する（図１７：Ｓ３０３、図１８（ａ）：Ｓ３２５、図１８（ｂ）：Ｓ３４１）。これにより、各ウェブサーバ３０−１〜３０−ｎは、応答しないウェブサーバ３０にメッセージを送信しないようにすることができる。
【０１１８】
また、本実施形態において、ウェブサーバ３０−１は、他のウェブサーバ３０に送信するメッセージ情報に当該メッセージ情報がウェブサーバ３０−１から送信されたメッセージであることを示すサーバ転送フラグを付加する（図１３：Ｓ２０９、図１４：Ｓ１５９）。ウェブサーバ３０−２は、サーバ転送フラグが付加されたメッセージを受信した場合、サーバ転送フラグが付加されたメッセージを他のウェブサーバ３０に送信しない。具体的には、ウェブサーバ３０−２は、ウェブサーバ３０−１からサーバ転送フラグが付加されたメッセージを受信した場合、ウェブサーバ３０−１に当該メッセージを送信しない。これにより、ウェブサーバ３０−１とウェブサーバ３０−２との間で、メッセージが巡回するのを防ぐことができる。
【０１１９】
また、本実施形態において、ウェブサーバ３０同士は、Ｗｅｂｓｏｃｋｅｔにより接続が確立され、ウェブサーバ３０とクライアント装置５０とはＷｅｂｓｏｃｋｅｔにより接続が確立されている。これにより、複数のウェブサーバ３０により負荷分散を行うシステムにおいて、異なるウェブサーバ３０に接続されたクライアント装置５０間で、Ｗｅｂｓｏｃｋｅｔを用いたメッセージングを実現できる。
【０１２０】
なお、上記実施形態において、ウェブサーバ３０は、メッセージ情報の転送対象を特定する場合に、当該メッセージ情報を送信したクライアント装置５０を転送対象から除外するようにしてもよい。
【０１２１】
なお、上記実施形態においては、情報管理装置２０が、稼働中サーバリストおよびグループリストを管理していた。しかしながら、ウェブサーバ３０がアクセス可能であれば、負荷分散装置１０が、稼働中サーバリストおよびグループリストを管理してもよい。
【０１２２】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体（ただし、搬送波は除く）に記録しておくことができる。
【０１２３】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ（Digital Versatile Disc）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）などの可搬型記録媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１２４】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１２５】
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【０１２６】
なお、以上実施形態の説明に関して、更に以下の付記を開示する。
（付記１）  ネットワークに接続された複数の情報処理装置を含むメッセージ配信システムであって、
各情報処理装置は、
該情報処理装置との接続が確立している端末装置から、該端末装置が属するグループの情報を付帯したメッセージを受信した場合、前記メッセージを送信した端末装置と同一のグループに属し、該情報処理装置との接続が確立している他の端末装置に前記メッセージを送信するとともに、他の情報処理装置に前記メッセージを送信し、
他の情報処理装置との接続が確立している端末装置から送信されたメッセージを前記他の情報処理装置から受信した場合、前記メッセージを送信した端末装置と同一のグループに属し、該情報処理装置との接続が確立している端末装置に前記メッセージを送信する、
ことを特徴とするメッセージ配信システム。
（付記２）  前記各情報処理装置は、前記各情報処理装置との接続が確立している端末装置の情報を個別に管理することを特徴とする付記１に記載のメッセージ配信システム。
（付記３）  前記複数の情報処理装置のうち稼働中の情報処理装置の情報を管理する情報管理装置を備え、
前記各情報処理装置は、前記メッセージの送信に失敗した、または、接続の切断を検出した情報処理装置が存在する場合に、該情報処理装置の情報を前記情報管理装置に送信し、
前記情報管理装置は、前記稼働中の情報処理装置の情報から、前記メッセージの送信に失敗した、または、接続の切断を検出した情報処理装置の情報を削除する、
ことを特徴とする付記１または２に記載のメッセージ配信システム。
（付記４）  前記各情報処理装置は、
該情報処理装置との接続が確立している他の情報処理装置の情報を個別に管理し、
前記メッセージの送信に失敗した、または、接続の切断を検出した情報処理装置の情報を、個別に管理している前記他の情報処理装置の情報から削除する、
ことを特徴とする付記３に記載のメッセージ配信システム。
（付記５）  前記各情報処理装置は、
前記他の情報処理装置に送信する前記メッセージに、該メッセージが前記各情報処理装置から送信されたメッセージであることを示すフラグを付加し、
前記フラグが付加された前記メッセージを受信した場合、前記フラグが付加された前記メッセージを前記他の情報処理装置に送信しない、
ことを特徴とする付記１〜４のいずれかに記載のメッセージ配信システム。
（付記６）  前記複数の情報処理装置は、Ｗｅｂｓｏｃｋｅｔにより互いの接続が確立されており、
前記各情報処理装置と前記端末装置とはＷｅｂｓｏｃｋｅｔにより接続が確立されていることを特徴とする付記１〜５のいずれかに記載のメッセージ配信システム。
（付記７）  自装置との接続が確立している端末装置から、該端末装置が属するグループの情報を付帯したメッセージを受信した場合、前記メッセージを送信した端末装置と同一のグループに属し、前記自装置との接続が確立している他の端末装置に前記メッセージを送信するとともに、他の情報処理装置に前記メッセージを送信し、
他の情報処理装置との接続が確立している端末装置から送信されたメッセージを前記他の情報処理装置から受信した場合、前記メッセージを送信した端末装置と同一のグループに属し、前記自装置との接続が確立している端末装置に前記メッセージを送信する、
処理をコンピュータに実行させることを特徴とするメッセージ配信プログラム。
（付記８）  前記メッセージの送信に失敗した、または、接続の切断を検出した情報処理装置が存在する場合に、該情報処理装置の情報を、稼働中の情報処理装置の情報を管理する情報管理装置に送信する、
処理をさらにコンピュータに実行させることを特徴とする付記７に記載のメッセージ配信プログラム。
（付記９）  前記メッセージの送信に失敗した、または、接続の切断を検出した情報処理装置を、個別に管理している前記他の情報処理装置の情報から削除する、
処理をさらにコンピュータに実行させることを特徴とする付記８に記載のメッセージ配信プログラム。
（付記１０）  前記他の情報処理装置に送信する前記メッセージに、該メッセージが前記端末装置ではなく情報処理装置から送信されたメッセージであることを示すフラグを付加し、
前記フラグが付加された前記メッセージを受信した場合、前記フラグが付加された前記メッセージを前記他の情報処理装置に送信しない、
処理をさらにコンピュータに実行させることを特徴とする付記７〜９のいずれかに記載のメッセージ配信プログラム。
（付記１１）  前記自装置と前記他の情報処理装置とは、Ｗｅｂｓｏｃｋｅｔにより互いの接続が確立されており、
前記自装置と前記端末装置とはＷｅｂｓｏｃｋｅｔにより接続が確立されていることを特徴とする付記７〜１０のいずれかに記載のメッセージ配信プログラム。
（付記１２）  第１の情報処理装置が、前記第１の情報処理装置との接続が確立している端末装置から該端末装置が属するグループの情報を付帯したメッセージを受信した場合、前記メッセージを送信した端末装置と同一のグループに属し、前記第１の情報処理装置との接続が確立している他の端末装置に前記メッセージを送信するとともに、前記第１の情報処理装置との接続が確立している第２の情報処理装置に前記メッセージを送信し、
前記第２の情報処理装置が、前記第１の情報処理装置から受信した前記メッセージを、前記メッセージを送信した端末装置と同一のグループに属し、前記第２の情報処理装置との接続が確立している端末装置に送信する、
ことを特徴とするメッセージ配信方法。
（付記１３）  前記第１の情報処理装置および前記第２の情報処理装置は、自装置との接続が確立している端末装置の情報を個別に管理することを特徴とする付記１２に記載のメッセージ配信方法。
（付記１４）  前記第１の情報処理装置は、前記第２の情報処理装置のうち前記メッセージの送信に失敗した、または、接続の切断を検出した第３の情報処理装置が存在する場合に、該第３の情報処理装置の情報を、稼働中の情報処理装置の情報を管理する情報管理装置に送信し、
前記情報管理装置は、前記稼働中の情報処理装置の情報から、前記第３の情報処理装置の情報を削除する、
ことを特徴とする付記１２または１３に記載のメッセージ配信方法。
（付記１５）  前記第１の情報処理装置および前記第２の情報処理装置は、自装置との接続が確立している他の情報処理装置の情報を個別に管理し、
前記第１の情報処理装置は、個別に管理している前記他の情報処理装置の情報から前記第３の情報処理装置の情報を削除する、
ことを特徴とする付記１４に記載のメッセージ配信方法。
（付記１６）  前記第１の情報処理装置は、前記第２の情報処理装置に送信する前記メッセージに、該メッセージが前記第１の情報処理装置から送信されたメッセージであることを示すフラグを付加し、
前記第２の情報処理装置は、前記フラグが付加された前記メッセージを受信した場合、前記フラグが付加された前記メッセージを他の情報処理装置に送信しない、
ことを特徴とする付記１２〜１５のいずれかに記載のメッセージ配信方法。
（付記１７）  前記第１の情報処理装置と前記第２の情報処理装置とは、Ｗｅｂｓｏｃｋｅｔにより互いの接続が確立されており、
前記第１の情報処理装置および前記第２の情報処理装置と前記端末装置とはＷｅｂｓｏｃｋｅｔにより接続が確立されていることを特徴とする付記１２〜１６のいずれかに記載のメッセージ配信方法。
（付記１８）  自装置との接続が確立している端末装置、または、他の情報処理装置からメッセージを受信する受信部と、
前記自装置との接続が確立している端末装置から、該端末装置が属するグループの情報を付帯したメッセージを受信した場合、前記メッセージを送信した端末装置と同一のグループに属し、前記自装置との接続が確立している他の端末装置に前記メッセージを送信するとともに、他の情報処理装置に前記メッセージを送信し、他の情報処理装置との接続が確立している端末装置から送信されたメッセージを前記他の情報処理装置から受信した場合、前記メッセージを送信した端末装置と同一のグループに属し、前記自装置との接続が確立している端末装置に前記メッセージを送信する送信部と、
を備えることを特徴とするメッセージ配信装置。
（付記１９）  前記自装置との接続が確立している端末装置の情報を個別に管理する接続管理部、
を備えることを特徴とする付記１８に記載のメッセージ配信装置。
（付記２０）  前記送信部は、前記メッセージの送信に失敗した、または、接続の切断を検出した情報処理装置が存在する場合に、該情報処理装置の情報を、稼働中の情報処理装置の情報を管理する情報管理装置に送信し、
前記接続管理部は、前記メッセージの送信に失敗した、または、接続の切断を検出した情報処理装置の情報を、個別に管理している前記他の情報処理装置の情報から削除する、
ことを特徴とする付記１９に記載のメッセージ配信装置。
（付記２１）  前記送信部は、前記他の情報処理装置に送信する前記メッセージに、該メッセージが前記メッセージ配信装置から送信されたメッセージであることを示すフラグを付加し、前記受信部が前記フラグが付加された前記メッセージを受信した場合、前記フラグが付加された前記メッセージを前記他の情報処理装置に送信しない、
ことを特徴とする付記１８〜２０のいずれかに記載のメッセージ配信装置。
（付記２２）  前記メッセージ配信装置と前記他の情報処理装置とは、Ｗｅｂｓｏｃｋｅｔにより互いの接続が確立されており、
前記メッセージ配信装置と前記端末装置とはＷｅｂｓｏｃｋｅｔにより接続が確立されていることを特徴とする付記１８〜２１のいずれかに記載のメッセージ配信装置。
【符号の説明】
【０１２７】
２０  情報管理装置
３０、３０−１〜３０−ｎ  ウェブサーバ（情報処理装置）
３１  受信部
３２  送信部
３３  接続管理部
５０、５０−１〜５０−ｎ  クライアント装置（端末装置）
１００  メッセージ配信システム
【図１】
0006540307.tif 000002
【図２】
0006540307.tif 000003
【図３】
0006540307.tif 000004
【図４】
0006540307.tif 000005
【図５】
0006540307.tif 000006
【図６】
0006540307.tif 000007
【図７】
0006540307.tif 000008
【図８】
0006540307.tif 000009
【図９】
0006540307.tif 000010
【図１０】
0006540307.tif 000011
【図１１】
0006540307.tif 000012
【図１２】
0006540307.tif 000013
【図１３】
0006540307.tif 000014
【図１４】
0006540307.tif 000015
【図１５】
0006540307.tif 000016
【図１６】
0006540307.tif 000017
【図１７】
0006540307.tif 000018
【図１８】
0006540307.tif 000019
【図１９】
0006540307.tif 000020