発明を実施するための第一の形態について、図面を参照して詳細に説明する。
図1は、セッション管理システム40の構成の一例を示す。セッション管理システム40は、少なくとも1台のクライアント装置10、及び、セッション管理装置20を包含し、これらの各構成要素は、ネットワーク30を介して相互に接続される。
セッション管理システム40は、例えば、クライアント装置(1)10−A、及び、クライアント装置(2)10−Bの2台のクライアント装置10を含む。
クライアント装置10は、操作状態取得部101、及び、操作状態送信部102を包含する。
操作状態取得部101は、クライアント装置10でのユーザの操作の特徴を、操作状態として取得する。
操作状態送信部102は、操作状態取得部101により取得した操作状態を、セッション管理装置20に送信する。
ここで、操作状態取得部101、及び、操作状態送信部102は、論理回路等のハードウェアで構成される。
また、操作状態取得部101、及び、操作状態送信部102は、コンピュータであるクライアント装置10のプロセッサが、図示されないメモリ上のプログラムを実行することで実現されても良い。本実施形態では、クライアント装置10は、例えば、アンドロイド(Android)(登録商標)で動作するスマートフォンである。
なお、クライアント装置10の台数は1台以上の任意の台数あっても良く、クライアント装置10は任意のオペレーティングシステム(OS)が動作する携帯電話、タブレット機、パーソナルコンピュータなどの装置でも良い。
セッション管理装置20は、チャット実施部21、及び、セッション管理部22を包含する。
チャット実施部21は、チャット開始部211、メッセージ配送部212、メッセージ取得部213、及び、チャット退室部214を包含する。
チャット開始部211は、クライアント装置10からのチャット開始要求に基づいて、チャット開始処理を実行する。
メッセージ配送部212は、クライアント装置10からのメッセージ配送要求に基づき、メッセージを配送する。
メッセージ取得部213は、クライアント装置10からのメッセージ取得要求に基づき、セッション管理部22に格納された過去のメッセージを取得する。
チャット退室部214は、クライアント装置10もしくはセッション管理部22からのチャット退室要求に基づき、チャットからの退室処理を実行する。
セッション管理部22は、セッション開始部221、セッションアクセス部222、操作状態受信部223、操作状態管理部224、手動セッション切断部225、自動セッション切断部226、管理記憶部227、及び、セッションコンテンツデータベース(以下、DB)228を包含する。
セッション開始部221は、チャット実施部21からのセッション開始要求に基づいて、セッション開始処理を行う。
セッションアクセス部222は、確立済みのセッションについて、セッションに接続されたクライアント装置10の情報の参照、及び、セッションコンテンツの読み書きの機能を有する。
操作状態受信部223は、クライアント装置10から操作状態を受け取り、その内容を管理記憶部227に反映させる。
操作状態管理部224は、管理記憶部227を参照して、各操作状態の経過時間がタイムアウト時間に到達した場合に、操作状態の遷移、または、セッションを切断させる判断を行う。
手動セッション切断部225は、クライアント装置10からの要求に基づき、セッションの切断を行う。
自動セッション切断部226は、操作状態管理部224からの要求に基づき、確立済みのセッションからクライアント装置10の切断処理を実行する。
管理記憶部227は、セッションの状態、クライアント装置10の操作状態、各操作状態の経過時間、及び、タイムアウト時間を格納するデータベースである。
セッションコンテンツDB228は、セッションに関連付けた情報を格納するデータベースである。
ここで、チャット開始部211、メッセージ配送部212、メッセージ取得部213、チャット退室部214、セッション開始部221、セッションアクセス部222、操作状態受信部223、操作状態管理部224、手動セッション切断部225、及び、自動セッション切断部226は、論理回路等のハードウェアで構成される。
管理記憶部227、及び、セッションコンテンツDB228は、ディスク装置、半導体メモリ、等の記憶装置である。
また、チャット開始部211、メッセージ配送部212、メッセージ取得部213、チャット退室部214、セッション開始部221、セッションアクセス部222、操作状態受信部223、操作状態管理部224、手動セッション切断部225、及び、自動セッション切断部226は、コンピュータであるセッション管理装置20のプロセッサが、図示されないメモリ上のプログラムを実行することで実現されても良い。
また、ネットワーク30は、イーサネット(Ethernet)(登録商標)などの有線、Wi−Fi(登録商標)や携帯電話回線などの無線、あるいは、それらの混在のいずれでも良い。
図2は、セッションの概念を示す。図2を用いて、本実施形態におけるセッションの概念を説明する。一般に、セッションとは、複数台の装置の間で行われる一連の操作や通信のことである。
本実施形態では、1つのセッションには1台のセッション管理装置20(サーバ)と少なくとも1台のクライアント装置10が同時に参加することが可能であり、セッションに参加しているクライアント装置10は、セッションに参加している別のクライアント装置10への同報メッセージ送信、及び、セッションに関連付けられたデータの取得ができる。
各セッションは、固有のセッションIDにより識別される。図2の例では、セッションIDは851である。
なお、セッションの状態は、管理記憶部227に格納され、セッションに関連付けられたデータは、セッションコンテンツDB228に格納される。
図3は、クライアントアプリケーションの画面遷移の一例を示す。図3を参照して、本実施形態におけるチャットのクライアントアプリケーションについて、画面遷移を説明する。
チャット入室前画面は、チャットルームに入室していない状態を示す画面である。ここで、ユーザがチャットルーム作成を選択すると、チャットルーム作成画面に遷移する。
チャットルーム作成画面は、新規に作成するチャットルームの参加者を選択する画面である。ここで、ユーザがチャット開始を選択すると、チャット画面に遷移する。
チャット画面は、チャット参加者による発言が表示される画面である。ここで、ユーザがメッセージ入力を選択するとメッセージ入力画面に、退室を選択するとチャット退室確認画面に、それぞれ遷移する。また、セッション管理装置20からのチャット退室通知が到着した場合には、チャットルームから自動退室し、チャット入室前画面に遷移する。
チャット退室確認画面は、チャットルームに入室しており、チャットルームからの退室を確認している状態である。ここで、ユーザがOKを選択するとチャットルームを退室して、チャット入室前画面に遷移する。
メッセージ入力画面は、チャットルームに発言するメッセージを入力している状態である。メッセージ入力を完了し、送信を選択するとチャット画面に遷移する。
なお、他のユーザからチャットに招待された場合、すなわち、他のクライアント装置10のチャットルーム作成画面において、自分のクライアント装置10が選択された場合には、自動的にチャット画面に遷移する。
また、図3を用いて、操作状態とチャット画面との対応について説明する。操作状態は、クライアント装置10でユーザがクライアントアプリケーションを操作している状態を示すものであり、例えば、操作中状態、閲覧状態、及び、非閲覧状態、の3種類を定義する。
操作中状態は、セッションに関連した情報を入力する画面を表示している状態である。図3に示した画面遷移では、メッセージ入力画面が操作中状態に相当する。
閲覧状態は、セッションに関連した主要な画面を表示しているが、情報の入力中ではない状態である。図3の画面遷移では、チャット画面、及び、チャット退室確認画面が閲覧状態に相当する。
非閲覧状態は、操作中状態、及び、閲覧状態を除く操作状態であり、図3ではチャット入室前画面、及び、チャットルーム作成画面、が非閲覧状態に相当する。
なお、操作状態は、必ずしも画面の遷移を伴う必要はなく、例えば、チャット画面において、タッチパネルを用いたスクロール操作中の状態を操作状態の一つと定義して運用しても良い。
また、本実施形態では、チャットを対象としたセッションについて操作状態を定義しているが、例えば、ビデオ会議やオンラインゲーム等を対象としたセッションでもよく、これらについて、適宜、操作状態を定義して運用しても良い。
次に、操作状態のタイムアウトと遷移について説明する。各操作状態での経過時間が、予め設定されたタイムアウト時間に到達した場合、操作状態管理部224が、各操作状態をタイムアウトにより強制的に他の操作状態に遷移させる判断を行い、クライアント装置10にタイムアウトによる操作状態の遷移を実行させる。
図3に示すように、操作中状態でタイムアウト時間に到達した場合には、操作状態は閲覧状態に遷移し、閲覧状態でタイムアウト時間に到達した場合には、操作状態は非閲覧状態に遷移する。さらに、非閲覧状態でタイムアウト時間に到達した場合には、自動セッション切断部226が当該セッションを切断する。なお、各操作状態でタイムアウト時間に到達した場合、操作状態管理部224は、他の操作状態に遷移させることなく、直ちにセッションを切断させても良い。
なお、クライアント装置10で取得した各操作状態の管理記憶部227への登録は、該当するクライアント装置10がセッションに参加している間、ユーザの操作とは無関係に、一定時間毎に実行する。
図4は、管理記憶部227の内容の一例を示す。
図4(a)は、セッションの操作状態、及び、各操作状態での経過時間を示す。図4(a)において、各行(レコード)は、セッションID、サーバ名、及び、クライアント名の組により一意に特定される。例えば、図4では、セッションID851には1台のサーバであるセッション管理装置20(サーバ名chat)と2台のクライアント装置10(クライアント名client1、client2)が参加しているので、セッションID851については、2つのレコードが存在する。
なお、以降に示す動作例を通して、管理記憶部227の内部では、セッション管理装置20、クライアント装置(1)10−A、及び、クライアント装置(2)10−Bは、各々、chat、client1、及び、client2として参照される。
管理記憶部227は、セッションの状態として、操作状態、操作経過時間、及び、状態推定の3つの状態を記録する。
各クライアント装置10の操作状態取得部101は、セッションに参加している間、一定時間毎に操作状態、及び、操作経過時間を取得し、操作状態送信部102が、その結果をセッション管理部22の操作状態受信部223に通知する。
なお、操作経過時間は、ユーザが各操作状態を最後に操作してから経過した時間を表す。また、本実施形態では、状態推定の項は使用しないため、常時、OFFに設定する。
図4(b)は、各操作状態に対するタイムアウト時間を示す。管理記憶部227は、例えば、操作中状態は120秒、閲覧状態は90秒、非閲覧状態は60秒、をタイムアウト時間として格納する。
一例として、現在の操作状態が操作中状態である場合を想定すると、図4(b)は、操作中状態で120秒が経過し、その後、閲覧状態で90秒が経過し、さらに、非閲覧状態で60秒が経過した場合には、セッションが切断されることを示す。
他の例として、操作中状態で120秒、閲覧状態で90秒、または、非閲覧状態で60秒が経過した場合には、直ちに、セッションを切断させても良い。
図5は、セッションコンテンツDB228の内容の一例を示す。図5に示すように、本実施形態におけるセッションコンテンツDB228は、セッションIDとキーの組に対して値を対応付けた、一種のキーバリューストア(key−value store)である。ただし、必ずしも、このような構造を取る必要はなく、例えば、ファイルシステム上にセッションID毎にサブディレクトリを分けた構造等でも良い。
図6は、セッション管理システム40の全体の動作シーケンスの一例を示す。図6のシーケンス図を用いて、本実施形態における全体の動作の流れを説明する。図6は、クライアント装置(1)10−A、及び、クライアント装置(2)10−Bとセッション管理装置20(サーバ)との間に新規にセッションを作成し、メッセージ送受信を行った後、セッションを終了するまでの一連の動作の例を示している。
なお、以下の(1)乃至(14)の説明は、図6に記載の(1)乃至(14)の各ステップに対応しているものとする。
(1)セッションは、クライアント装置10のユーザが、チャット開始の操作を選択し、チャット参加者を選択することによって開始する。この操作を行うと、クライアント装置(1)10−Aは、セッション管理装置20に対して、チャット開始要求を送信する。
(2)チャット実施部21は、チャット開始要求を受け取ると、チャット開始処理を実行する。チャット実施部21は、セッション管理部22に対して、クライアント装置(1)10−Aとクライアント装置(2)10−Bとを参加者とするセッション開始要求を送信する。
(3)チャット実施部21は、クライアント装置(2)10−Bに対して、チャット参加通知を送信する。クライアント装置(2)10−Bから見ると、クライアント装置(1)10−Aからチャットに招待され、チャット画面に遷移する動作に相当する。
(4)クライアント装置(1)10−Aは、セッション管理部22に対して、クライアント装置(1)10−Aについての操作状態を通知する。
(5)クライアント装置(2)10−Bは、セッション管理部22に対して、クライアント装置(2)10−Bについての操作状態を通知する。
(6)クライアント装置(1)10−Aのユーザは、メッセージの入力および送信操作を行う。これをトリガーとして、クライアント装置(1)10−Aは、チャット実施部21に対して、セッション参加者へのメッセージ送信要求を送信する。
(7)チャット実施部21は、セッション管理部22からセッション参加者の情報を参照するとともに、セッションコンテンツDB228へのメッセージの格納を要求する。一方、セッション管理部22は、セッションIDと、格納するデータを受け取り、セッションコンテンツDB228にその内容を格納する。
(8)チャット実施部21は、(7)でのセッション参加者の参照結果に基づき、(6)でクライアント装置(1)10−Aから受信したメッセージをクライアント装置(2)10−Bに配送する。
(9)クライアント装置(1)10−Aのユーザは、クライアント装置(1)10−Aからチャット実施部21に対して、チャットルーム上の過去の発言の取得を要求する。
(10)チャット実施部21は、セッション管理部22に対して、セッションコンテンツとして格納された過去の発言の取得を要求し、その結果をクライアント装置(1)10−Aに渡す。また、セッション管理部22は、セッションコンテンツDB228から該当するセッションコンテンツの内容を取り出し、チャット実施部21に返却する。
(11)クライアント装置(1)10−Aのユーザは、チャット退室操作を行う。これを受けて、クライアント装置(1)10−Aは、チャット実施部21に対して、チャットルームからの退室要求を送信する。
(12)チャット実施部21は、セッション管理部22に対して、クライアント装置(1)10−Aについてのセッション切断要求を送信する。
(13)セッション管理部22は、チャット実施部21に対して、クライアント装置(2)10−Bについてのセッション切断通知を送信する。
(14)チャット実施部21は、クライアント装置(2)10−Bに対して、クライアント装置(2)10−Bのセッション切断を通知する。これは、図3において、チャット画面から自動退室する遷移に相当する。
図7は、チャット開始部211におけるチャット開始処理の動作手順を示すフローチャートである。図7のフローチャートを用いて、チャット開始部211におけるチャット開始処理の動作手順を説明する。
まず、チャット開始部211は、クライアント装置10からチャット開始要求を受信する。要求のパラメータは、チャットルームに参加するクライアント装置10の名前のリストを含む(S11)。
次に、チャット開始部211は、セッション開始部221に対して、セッション作成要求を送信する。要求のパラメータは、セッション管理装置20(サーバ)の名前とクライアント装置10の名前のリストを含む(S12)。
次に、チャット開始部211は、セッション開始部221から、(S12)のセッション作成要求への応答を受信する。この応答は、新規に作成されたセッションのIDを含む(S13)。
さらに、(S11)のチャット開始要求を送信したクライアント装置10に対して、チャット開始部211が、応答を送信する。応答は、(S13)で受け取ったセッションIDを含む(S14)。
新規チャットルームに参加するクライアント装置10のうち、(S11)のチャット開始要求の送信元以外の各々に対して、チャット開始部211が、チャット参加通知を送信する。この通知は、チャットに参加するクライアント装置10の名前のリスト、及び、(S13)で受け取ったセッションIDを含む(S15)。
図8は、セッション開始部221におけるセッション開始処理の動作手順を示すフローチャートである。
図8のフローチャートを用いて、セッション開始部221におけるセッション開始処理の動作手順を説明する。
セッション開始部221は、チャット実施部21のチャット開始部211からセッション開始要求を受け取ると、図8のフローチャートに示すセッション開始処理を実行する。
セッション開始部221は、チャット開始部211からセッション開始要求を受信する。要求のパラメータは、サーバ名とクライアント名のリストを含む(S21)。
次に、セッション開始部221は、新規セッションを識別するためのセッションIDを生成する。セッションIDは、例えば、851のように3桁の数字を割り当てて生成する(S22)。
次に、セッション開始部221は、管理記憶部227に、新規セッションについてのレコードを追加する。新規レコードの情報は、(S22)で生成したセッションID、及び、(S21)で受け取ったクライアント名およびサーバ名を含む(S23)。
さらに、セッション開始部221は、(S22)で生成したセッションIDに対応するセッションコンテンツDB228の領域を初期化する(S24)。
また、セッション開始部221は、チャット開始部211に対して応答を送信する。応答は、(S22)で生成したセッションIDを含む(S25)。
図9は、操作状態の通知を受け取った後の管理記憶部227の内容の一例を示す。図9を用いて、クライアント装置10側で取得した操作状態を管理記憶部227に登録する動作について説明する。
クライアント装置10の操作状態取得部101は、セッションに参加している間に、一定時間毎に操作状態を取得する。操作状態送信部102は、操作状態取得部101が取得した結果をセッション管理部22の操作状態受信部223に通知する。通知の内容は、クライアント名、操作状態、及び、操作経過時間を含む。
操作状態受信部223は、クライアント装置10から受信した通知の内容を、管理記憶部227に反映する。
図9は、client1、及び、client2が参加したセッションの管理記憶部227の内容を示す。
図9(a)は、client1、及び、client2の閲覧状態が開始した時点で、操作経過時間は共に0秒である。
図9(b)は、図9(a)から30秒後の状態を示し、時間の経過とともに、client1では操作状態が閲覧状態から操作中状態に変わり、client2では同じ操作状態の閲覧状態のまま操作経過時間が加算されたことを示す。
図10は、操作状態管理部224における操作状態のタイムアウトによる状態遷移の動作を示すフローチャートである。図10のフローチャートを参照して、操作状態のタイムアウトに基づく操作状態の遷移の動作手順を説明する。
セッション管理部22の操作状態管理部224は、セッション情報に該当するレコード(以下、対象レコード)について、状態推定がOFFであることを確認する(S31)。
次に、操作状態管理部224は、対象レコードの操作経過時間に前回の操作通知受信からの経過時間を加算し、値を書き換える(S32)。
(S32)の結果、操作経過時間の値が閾値に達した場合には(S33でY)、(S34)に進む。そうでない場合には(S33でN)、処理を終了する(S33)。
また、対象レコードの操作状態の値が非閲覧状態である場合には(S34でY)、処理を終了する。それ以外の場合は(S34でN)、(S35)に進む(S34)。
操作状態管理部224は、対象レコードの操作状態をタイムアウトにより遷移させ、操作中状態は閲覧状態に、閲覧状態は非閲覧状態に、書き換える(S35)。
また、操作状態管理部224は、対象レコードの操作経過時間の値を0秒にリセットする(S36)。
なお、(S33)の閾値は、例えば、操作中状態は120秒、閲覧状態は90秒とし、以下の説明では、これらの値を使用する。
図11は、操作状態のタイムアウトによる状態遷移を実施した後の管理記憶部227の内容の一例を示す。図11を参照して、操作状態のタイムアウトによる遷移が発生した後の管理記憶部227の内容を説明する。
図11(a)は、一例として、ある時点での管理記憶部227の内容を示し、client2が操作中状態で95秒を経過した段階であることを示す。
次に、図11(b)は、図11(a)から30秒後の状態を示し、client2における操作中状態が、タイムアウト時間の閾値である120秒を超過したことを示す。ここで、図10の(S35)に従い、操作状態を操作中状態から閲覧状態に書き換え、図10の(S36)に従い、操作経過時間を0秒にリセットする。
なお、この時点で、セッション管理装置20は、クライアント装置10に対して、タイムアウトの通知を送信する。
さらに、図11(c)は、図11(b)から30秒後の状態を表し、client2が、閲覧状態に遷移し、経過時間が加算されている状態を示す。
図12は、操作状態のタイムアウトによる状態遷移を実施した後の管理記憶部227の内容の一例(図11とは別のケース)を示す。
図12(a)は、client1、client2共に閲覧状態であることを示す。
次に、図12(b)は、図12(a)から30秒後の状態を示し、client2の閲覧状態の経過時間が閾値の90秒を超過したことを示す。ここで、図11と同様に、操作状態を閲覧状態から非閲覧状態に書き換え、操作経過時間を0秒にリセットする。
さらに、図12(c)は、図12(b)から30秒後の状態を示す。client1は閲覧状態のまま時間が経過し、また、client2は非閲覧状態に遷移した状態であることを示す。
図13は、メッセージ配送部212におけるメッセージ送信処理の動作手順を示すフローチャートである。図13のフローチャートを用いて、メッセージ配送部212におけるメッセージ送信処理の動作手順を説明する。
なお、セッション管理システム40は、一旦セッションを確立した後で、セッションを用いて、クライアント装置10間、及び、クライアント装置10とセッション管理装置20の間で通信処理を行うが、ここでの通信処理は、クライアント装置10間の同報メッセージ送信、及び、セッションコンテンツの読み書きを含む。
まず、メッセージ取得部213は、クライアント装置10から送られたメッセージ送信要求を受信する。この要求は、セッションID、要求送信元のクライアント装置10の名前、及び、メッセージの各パラメータを含む(S41)。
次に、メッセージ配送部212は、セッションアクセス部222にセッションコンテンツ格納要求を送信する。この要求のパラメータは、(S41)で受信したセッションID、クライアント名、及び、メッセージを含む(S42)。
次に、メッセージ配送部212は、セッションアクセス部222にセッション情報の検索要求を送信し、管理記憶部227の中から、(S41)で受け取ったセッションIDに対応するクライアント名のリストを取得する(S43)。
さらに、メッセージ配送部212は、(S43)の検索結果であるクライアント装置10の各々(ただし送信元は除く)に対して、(S41)で受け取ったメッセージを送信する(S44)。
ここで、(S41)において、client1がメッセージ送信要求を送信し、管理記憶部227内のセッション情報の内容が図4の通りであるとすると、(S43)ではclient1、client2の2台のクライアント装置10が検索結果となる。
したがって、(S44)では、メッセージ配送部212は、メッセージ送信要求の送信元であるclient1を除いたクライアント装置10、すなわちclient2にメッセージを配送する。
なお、(S42)において、セッションコンテンツDB228の構造として図5に示すキーバリューストアを仮定すると、セッションコンテンツ格納要求のパラメータは、例えば、セッションIDに加えて、キー:「message archive」、値:(クライアント名、メッセージ)、(クライアント名、メッセージ)、のような形式になる。
図14は、手動セッション切断部225における手動セッション切断処理の動作手順を示すフローチャートである。図14のフローチャートを用いて、手動セッション切断部225におけるセッション切断処理の動作手順を説明する。
なお、手動セッション切断は、クライアント装置10からの要求に基づくセッション切断処理である。クライアント装置10は、セッション管理装置20に対してチャット退室要求を送信する。この要求のパラメータは、要求送信元のクライアント装置10の名前、及び、セッションIDを含む。
まず、手動セッション切断部225は、クライアント装置10からのセッション切断要求をチャット実施部21から受信する。要求のパラメータは、クライアント名およびセッションIDを含む(S51)。
次に、手動セッション切断部225は、管理記憶部227から、(S51)で受信したクライアント名、及び、セッションIDの条件に一致するレコードを削除する(S52)。
次に、手動セッション切断部225は、(S51)で受信したセッションIDに一致する他のレコードが管理記憶部227に存在するかどうか、すなわち離脱対象のセッションに他のクライアント装置10が接続しているかどうかを調べる。もし、ある場合には(S53でY)、処理を終了し、ない場合には(S53でN)、(S54)に進む(S53)。
(S53でN)の場合、手動セッション切断部225は、セッションコンテンツDB228から、(S51)で受け取ったセッションIDに対応するデータを削除し、処理を終了する(S54)。
図15は、自動セッション切断部226における自動セッション切断処理の動作手順を示すフローチャートである。図15のフローチャートを用いて、自動セッション切断部226における自動セッション切断処理の動作手順を説明する。
なお、自動セッション切断処理は、セッションに参加しているクライアント装置10のうち、非閲覧状態のものについて、自動セッション切断部226が強制的にセッションから切断する処理のことである。本実施形態では、非閲覧状態かつ操作経過時間が60秒に達したクライアント装置10を自動セッション切断処理の対象とする。
まず、自動セッション切断部226は、管理記憶部227からレコードの情報を取得する(S61)。
次に、自動セッション切断部226は、(S61)で取得したレコードについて、セッション切断条件を満たしているかどうかを確かめる。本実施例におけるセッション切断条件は、当該レコードの操作状態が非閲覧状態で、かつ操作経過時間が60秒以上であることである。この条件を満たしている場合には(S62でY)、(S63)に進み、満たしていない場合は(S62でN)、処理を終了する(S62)。
自動セッション切断部226は、管理記憶部227から、(S61)で取得したレコードを削除する(S63)。
さらに、自動セッション切断部226は、管理記憶部227に、(S61)で取得したレコードのセッションIDに一致するレコードが残っているかどうかを調べる。残っている場合には(S64でY)、(S66)に進み、残っていない場合には(S64でN)、(S65)に進む(S64)。
また、自動セッション切断部226は、セッションコンテンツDB228から、切断対象のセッションIDに対応するデータを削除する(S65)。
この後、自動セッション切断部226は、セッション切断対象のクライアント装置10に対して、セッション切断通知を送信する。この通知は、(S61)で取得したレコードのセッションIDを含む(S66)。
なお、(S62)に示したセッション切断条件はあくまで一例であり、条件に用いる操作状態あるいは操作経過時間の値を変えても本発明の本質は失われない。また、自動セッション切断の処理は、操作状態管理部224が行ってもよい。
ところで、本実施形態では、チャット実施部21とセッション管理部22は、同一のセッション管理装置20に包含される構成としたが、ネットワーク30を介した同一のセッションに接続していれば、別々の装置に収納されている構成としても良い。
本実施形態に係るセッション管理システム40は、以下に記載するような効果を奏する。
ユーザが操作しているにも関わらずセッションが切断される事態を防ぐことが可能である。
その理由は、クライアント装置10の操作状態を定期的に取得するからである。そして、操作状態に応じたタイムアウト時間を用いるからである。
<第二の実施形態>
図16は、第二の実施形態に係る、セッション管理システム40の構成の一例を示す。本実施形態では、第一の実施形態の構成に、操作状態推定部229を追加する。
操作状態推定部229は、クライアント装置10からの操作状態通知を一定時間内に入手できない場合、管理記憶部227を参照して、直前に登録された各操作状態が継続していると仮定し(以下、これを推定とする)、操作状態がタイムアウト時間に到達した場合には、当該操作状態をタイムアウトさせる。
ここで、操作状態推定部225は、論理回路等のハードウェアで構成される。また、操作状態推定部225は、コンピュータであるセッション管理装置20のプロセッサが、図示されないメモリ上のプログラムを実行することで実現されても良い。
図17は、第二の実施形態に係る、操作状態の推定に基づくタイムアウトによる遷移の動作を示すフローチャートである。図17のフローチャートを参照して、操作状態の推定に基づくタイムアウトによる遷移の動作手順を示す。
通常は、セッションに参加しているクライアント装置10は、一定時間毎に操作状態を取得し、操作状態受信部223にその結果を通知する。しかし、クライアント装置10とセッション管理装置20の間の通信網が一時的に利用不可能になると、操作状態受信部223は、操作状態の情報を入手できなくなる。
このため、操作状態推定部229は、管理記憶部227に含まれるセッションIDとクライアント装置10の組の各々について、一定時間内に操作状態通知が届かない場合、以下の手順で操作状態を推定し、その結果をセッション情報に反映させる。
ここで操作状態推定部229は、管理記憶部227のうち、一定時間内に操作状態通知が届かないレコードを、推定対象レコードとする。
まず、通信障害が発生したため、操作状態推定部229は、セッション情報の該当するレコード(以下、推定対象レコード)について、状態推定をONに変更する(S71)。
次に、操作状態推定部229は、推定対象レコードの操作経過時間に、前回の操作通知受信からの推定経過時間を加算することにより、経過時間の値を書き換える(S72)。
(S72)の結果、操作経過時間の値が閾値に達した場合には(S73でY)、(S74)に進む。そうでない場合には(S73でN)、(S77)に進む。(S73)。
なお、(S73)の閾値は、管理記憶部227に格納された図10と同じ値(例えば、操作中状態は120秒、閲覧状態は90秒)を用い、以下の説明では、これらの値を使用する。
次に、推定対象レコードの操作状態の値が非閲覧状態である場合には(S74でY)、(S77)に進む。それ以外の場合は(S74でN)、(S75)に進む(S74)。
次に、操作状態推定部229は、対象レコードの操作状態をタイムアウトし遷移させ、操作中状態は閲覧状態に、閲覧状態は非閲覧状態に、書き換える(S75)。
また、操作状態推定部229は、推定対象レコードの操作経過時間の値を0秒にリセットする(S76)。
通信が復旧した時点で、操作状態推定部225は、状態推定をOFFに変更する(S77)。
図18は、第二の実施形態に係る、操作状態の推定に基づくタイムアウトによる遷移を実施した後の管理記憶部227の内容の一例を示す。図18を用いて、操作中状態で通信障害が発生した場合の推定処理の動作を説明する。
図18(a)は、ある時点での管理記憶部227の内容の一例を示す。client1、及び、client2は、各々、図に示す操作状態であると仮定する。
次に、図18(b)は、図18(a)の後、例えば、client2が操作中状態で操作経過時間100秒となった時点で通信障害がclient2に発生し、その状態のまま時間が経過した場合を示す。
操作状態推定部229は、(S71)に従い、client2の状態推定の値をONに書き換える。
また、通信障害のため、client2から操作状態を取得することはできないが、図に示すように、操作状態推定部229は、client2が操作中状態で閾値の120秒に到達したことを推定する。
ここで、(S75)に従い、操作状態を操作中状態から閲覧状態に書き換え、(S76)に従い、操作経過時間をリセットする。
この後、図18(b)から図18(c)に到達する間に、通信障害が復旧したものと仮定する。これに伴い、client2の状態推定をOFFに変更し、クライアント装置10で取得した情報に基づき操作状態を更新する状態に戻す。
本実施形態に係るセッション管理システム40は、以下に記載するような効果を奏する。
通信障害等が発生した場合でも、通常の通信状態と同様にセッションのタイムアウトを決定できる。
その理由は、クライアント端末10の直近の操作状態および操作経過時間を用いて、クライアント端末10の操作状態を推定するからである。
<第三の実施形態>
図19は、第三の実施形態に係る、セッション管理システム40の構成の一例を示す。本実施形態のセッション管理システム40は、クライアント装置10、及び、セッション管理装置20を包含する。
クライアント装置10は、操作状態取得部101を包含する。セッション管理装置20は、管理記憶部227、及び、操作状態管理部224を包含する。
操作状態取得部101は、セッションの操作状態を分類して定期的に取得する。
管理記憶部227は、操作状態の経過時間、及び、予め設定した操作状態のタイムアウト時間を格納する。
操作状態管理部224は、操作状態の経過時間がタイムアウト時間に到達した場合に、操作状態をタイムアウトし遷移させる。
本実施形態に係るセッション管理システム40は、以下に記載するような効果を奏する。
ユーザが操作しているにも関わらずセッションが切断される事態を防ぐことが可能である。
その理由は、クライアント装置10の操作状態を定期的に取得するからである。そして、操作状態に応じたタイムアウト時間を用いるからである。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。