(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-09
(54)【発明の名称】共有に基づく拡張現実コンテンツサービスシステム
(51)【国際特許分類】
H04L 67/148 20220101AFI20240702BHJP
H04L 67/1012 20220101ALI20240702BHJP
【FI】
H04L67/148
H04L67/1012
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023575806
(86)(22)【出願日】2022-07-19
(85)【翻訳文提出日】2023-12-08
(86)【国際出願番号】 SG2022050510
(87)【国際公開番号】W WO2023014286
(87)【国際公開日】2023-02-09
(32)【優先日】2021-08-04
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】521388058
【氏名又は名称】レモン インコーポレイテッド
【氏名又は名称原語表記】Lemon Inc.
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】チェン,イリン
(72)【発明者】
【氏名】リアオ,ジエ
(72)【発明者】
【氏名】ツァイ,フォン
(57)【要約】
方法及びシステムは、コンテンツサービスプラットフォームのためのものである。前記コンテンツサービスプラットフォームは、プロセッサと、前記プロセッサにより実行されるとき、前記コンテンツサービスプラットフォームを、方法を実行するように設定する。方法は、第1のクライアントから、第1のクライアント識別子を含む共有セッションを開始する要求を受信することを含んでもよい。受信した要求に基づいて、前記第1のクライアント識別子に関連付けられている前記第1のクライアントにセッション識別子を提供してもよい。前記セッション識別子に関連付けられるように第2のクライアントから要求を受信してもよい。このため、第1のクライアントからメッセージデータを受信すると、メッセージデータをセッション識別子に関連付けられているキューに追加してもよいため、メッセージデータがセッション識別子に基づいてキューから第2のクライアントに提供されてもよい。
【特許請求の範囲】
【請求項1】
少なくとも2つのクライアント間でメッセージデータを同期させる方法であって、
第1のクライアントから、第1のクライアント識別子を含む、共有セッションを開始する要求を受信することと、
受信した前記要求に基づいて、前記第1のクライアント識別子に関連付けられている前記第1のクライアントにセッション識別子を提供することと、
前記第1のクライアント識別子を前記セッション識別子に関連付けることと、
前記セッション識別子に関連付けられるように第2のクライアントから要求を受信することと、
前記第2のクライアント識別子を前記セッション識別子に関連付けることと、
前記第1のクライアントからメッセージデータを受信することと、
前記メッセージデータを前記セッション識別子に関連付けられているキューに追加することと、
前記メッセージデータを前記セッション識別子とともにデータベースに追加することと、
前記セッション識別子に基づいて、前記メッセージデータを前記キューから前記第2のクライアントに提供することと、
を含む、方法。
【請求項2】
前記第1のクライアントからの前記メッセージデータを、ロードバランサにおいて受信することと、
前記ロードバランサにおいて、リソースの可用性に基づいてウェブソケットサーバのインスタンスを決定することと、
前記メッセージデータを前記ウェブソケットサーバの決定された前記インスタンスに送信することと、
前記ウェブソケットサーバから、前記キューを含むウェブソケットストレージに前記メッセージデータを提供することと、
をさらに含む、請求項1に記載の方法。
【請求項3】
前記ウェブソケットストレージからの前記メッセージデータを、前記ロードバランサにおいて受信することと、
前記メッセージデータを、前記ウェブソケットストレージのキューから前記第2のクライアントに提供することと、
をさらに含む、請求項2に記載の方法。
【請求項4】
前記第1のクライアントからの前記メッセージデータを、ロードバランサにおいて受信することと、
前記ロードバランサにおいて、リソースの可用性に基づいてウェブソケットサーバのインスタンスを決定することと、
前記メッセージデータを前記ウェブソケットサーバの決定された前記インスタンスに送信することと、
前記ウェブソケットサーバから、前記メッセージデータを、前記メッセージデータを前記データベースに記憶するコンテンツサービスクラスタに提供することと、
をさらに含む、請求項1に記載の方法。
【請求項5】
前記メッセージデータはオブジェクト情報とセッション情報とを含み、前記オブジェクト情報は、前記データベースの、前記セッション識別子とは異なる場所に記憶されている
請求項1に記載の方法。
【請求項6】
前記オブジェクト情報は、拡張現実セッションのために前記第1のクライアントに関連付けられたディスプレイにおいて表示されるグラフィックオブジェクトを含む
請求項5に記載の方法。
【請求項7】
前記メッセージデータと前記セッション識別子とは、インメモリデータベースに記憶されている
請求項1に記載の方法。
【請求項8】
プロセッサと、
前記プロセッサにより実行されるとき、コンテンツサービスプラットフォームを、
第1のクライアントから、第1のクライアント識別子を含む、共有セッションを開始する要求を受信し、
受信した前記要求に基づいて、前記第1のクライアント識別子に関連付けられている前記第1のクライアントにセッション識別子を提供し、
前記第1のクライアント識別子を前記セッション識別子に関連付け、
前記セッション識別子に関連付けられるように第2のクライアントから要求を受信し、
前記第2のクライアント識別子を前記セッション識別子に関連付け、
前記第1のクライアントからメッセージデータを受信し、
前記メッセージデータを前記セッション識別子に関連付けられているキューに追加し、
前記メッセージデータを前記セッション識別子とともにデータベースに追加し、
前記セッション識別子に基づいて、前記メッセージデータを前記キューから前記第2のクライアントに提供する
ように設定する命令を記憶しているメモリと、
を備える、コンテンツサービスプラットフォーム。
【請求項9】
前記命令はさらに、前記コンテンツサービスプラットフォームを、
前記第1のクライアントからの前記メッセージデータを、ロードバランサにおいて受信し、
前記ロードバランサにおいて、リソースの可用性に基づいてウェブソケットサーバのインスタンスを決定し、
前記メッセージデータを前記ウェブソケットサーバの決定された前記インスタンスに送信し、
前記ウェブソケットサーバから、前記キューを含むウェブソケットストレージに前記メッセージデータを提供する
ように設定する、請求項8に記載のコンテンツサービスプラットフォーム。
【請求項10】
前記命令はさらに、前記コンテンツサービスプラットフォームを、
前記ウェブソケットストレージからの前記メッセージデータを、前記ロードバランサにおいて受信し、
前記メッセージデータを、前記ウェブソケットストレージのキューから前記第2のクライアントに提供する
ように設定する、請求項9に記載のコンテンツサービスプラットフォーム。
【請求項11】
前記命令はさらに、前記コンテンツサービスプラットフォームを、
前記第1のクライアントからの前記メッセージデータを、ロードバランサにおいて受信し、
前記ロードバランサにおいて、リソースの可用性に基づいてウェブソケットサーバのインスタンスを決定し、
前記メッセージデータを前記ウェブソケットサーバの決定された前記インスタンスに送信し、
前記ウェブソケットサーバから、前記メッセージデータを、前記メッセージデータを前記データベースに記憶するコンテンツサービスクラスタに提供する
ように設定する、請求項8に記載のコンテンツサービスプラットフォーム。
【請求項12】
前記メッセージデータはオブジェクト情報とセッション情報とを含み、前記オブジェクト情報は、前記データベースの、前記セッション識別子とは異なる場所に記憶されている
請求項11に記載のコンテンツサービスプラットフォーム。
【請求項13】
前記オブジェクト情報は、拡張現実セッションのために前記第1のクライアントに関連付けられたディスプレイにおいて表示されるグラフィックオブジェクトを含む
請求項12に記載のコンテンツサービスプラットフォーム。
【請求項14】
前記メッセージデータと前記セッション識別子とは、インメモリデータベースに記憶されている
請求項8に記載のコンテンツサービスプラットフォーム。
【請求項15】
コンピュータにより実行されるとき、前記コンピュータに、
第1のクライアントから、第1のクライアント識別子を含む、共有セッションを開始する要求を受信することと、
受信した前記要求に基づいて、前記第1のクライアント識別子に関連付けられている前記第1のクライアントにセッション識別子を提供することと、
前記第1のクライアント識別子を前記セッション識別子に関連付けることと、
前記セッション識別子に関連付けられるように第2のクライアントから要求を受信することと、
前記第2のクライアント識別子を前記セッション識別子に関連付けることと、
前記第1のクライアントからメッセージデータを受信することと、
前記メッセージデータを前記セッション識別子に関連付けられているキューに追加することと、
前記メッセージデータを前記セッション識別子とともにデータベースに追加することと、
前記セッション識別子に基づいて、前記メッセージデータを前記キューから前記第2のクライアントに提供することと、
を実行させる命令を含む、非一時的なコンピュータ可読記憶媒体。
【請求項16】
前記命令はさらに、前記コンピュータを、
前記第1のクライアントからの前記メッセージデータを、ロードバランサにおいて受信し、
前記ロードバランサにおいて、リソースの可用性に基づいてウェブソケットサーバのインスタンスを決定し、
前記メッセージデータを前記ウェブソケットサーバの決定された前記インスタンスに送信し、
前記ウェブソケットサーバから、前記キューを含むウェブソケットストレージに前記メッセージデータを提供する
ように設定する、請求項15に記載のコンピュータ可読記憶媒体。
【請求項17】
前記命令はさらに、前記コンピュータを、
前記ウェブソケットストレージからの前記メッセージデータを、前記ロードバランサにおいて受信し、
前記メッセージデータを、前記ウェブソケットストレージのキューから前記第2のクライアントに提供する
ように設定する、請求項16に記載のコンピュータ可読記憶媒体。
【請求項18】
前記命令はさらに、前記コンピュータを、
前記第1のクライアントからの前記メッセージデータを、ロードバランサにおいて受信し、
前記ロードバランサにおいて、リソースの可用性に基づいてウェブソケットサーバのインスタンスを決定し、
前記メッセージデータを前記ウェブソケットサーバの決定された前記インスタンスに送信し、
前記ウェブソケットサーバから、前記メッセージデータを、前記メッセージデータを前記データベースに記憶するコンテンツサービスクラスタに提供する
ように設定する、請求項15に記載のコンピュータ可読記憶媒体。
【請求項19】
前記メッセージデータはオブジェクト情報とセッション情報とを含み、前記オブジェクト情報は、前記データベースの、前記セッション識別子とは異なる場所に記憶されている
請求項18に記載のコンピュータ可読記憶媒体。
【請求項20】
前記メッセージデータと前記セッション識別子とは、インメモリデータベースに記憶されている
請求項15に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、2021年08月04日に出願された米国出願第17/394,390号(発明名称:自動的且つ効率的な共有に基づく拡張現実コンテンツサービスシステム)の優先権を主張し、該出願の全ての内容は、引用により全体として本願に組み込まれる。
【背景技術】
【0002】
ウェブ及びその他のアプリケーションは、その大部分がハイパーテキスト転送プロトコル(HTTP)に関連付けられた要求/応答パラダイムを使用して構築されてきた。例えば、ユーザがウェブページをロードすると、ユーザが次のページへクリックするまで、情報の更なる処理及び/又は表示が行われる。AJAXはウェブをよりダイナミックに感じさせるために導入されたが、HTTP通信はクライアントにより制御される傾向があり、サーバから新しいデータをロードするために、ユーザとのやり取りや定期的なポーリングが必要である。新しいデータが利用可能になった瞬間にサーバがクライアントにデータを即座に送信できるようにする技術は、HTTPのオーバーヘッドを伴うため、このような技術は低遅延のアプリケーションには適しておらず、拡張性もあまり高くない傾向がある。言い換えれば、現在の技術は、拡張現実コンテンツをリアルタイムで即座に共有するための拡張性のあるソリューションを提供していない。
【0003】
これら及び他の一般的な考慮に関連して本明細書で開示される態様を説明する。また、比較的具体的な問題を議論していくが、これらの例は、背景技術又は本開示の他の部分において特定された具体的な問題の解決に限定されるべきではないことを、理解すべきである。
【発明の概要】
【課題を解決するための手段】
【0004】
本開示の例によれば、低エンドツーエンド(end-to-end)遅延を示すリアルタイムのコンテンツ共有をサポートするコンテンツサービスシステムについて説明する。コンテンツサービスシステムは、拡張現実コンテンツを第1のクライアントから第2のクライアントへ送信することを容易にすることができる。ここで、第1のクライアントから第2のクライアントへの測定されるエンドツーエンド遅延は、数百ミリ秒である可能性がある。さらに、本明細書で説明されるコンテンツサービスシステムは、トラフィックの増加時も、又は、トラフィックの減少時も、パフォーマンス指標(例えば、メッセージ伝送レート、遅延)が同一又は類似のままであるように、顧客のトラフィックの変化に基づいて拡張可能であってもよい。したがって、コンテンツサービスシステムは、異なる地理的位置に位置する複数のクライアントが関与する拡張現実アプリケーションをサポートすることができる。
【0005】
本開示の少なくとも1つの例に従って、少なくとも2つのクライアント間でメッセージデータを同期させる方法について説明する。前記方法は、第1のクライアントから、第1のクライアント識別子を含む、共有セッションを開始する要求を受信することと、受信した要求に基づいて、前記第1のクライアント識別子に関連付けられている前記第1のクライアントにセッション識別子を提供することと、前記第1のクライアント識別子を前記セッション識別子に関連付けることと、前記セッション識別子に関連付けられるように第2のクライアントから要求を受信することと、前記第2のクライアント識別子を前記セッション識別子に関連付けることと、前記第1のクライアントからメッセージデータを受信することと、前記メッセージデータを前記セッション識別子に関連付けられているキューに追加することと、前記メッセージデータを前記セッション識別子とともにデータベースに追加することと、前記セッション識別子に基づいて、前記メッセージデータを前記キューから前記第2のクライアントに提供することと、を含んでもよい。
【0006】
本開示の少なくとも1つの例に従って、コンテンツサービスプラットフォームについて説明する。前記コンテンツサービスプラットフォームは、プロセッサと、命令を記憶しているメモリと、を備えてもよい。前記命令は、前記プロセッサにより実行されるとき、前記コンテンツサービスプラットフォームを、第1のクライアントから、第1のクライアント識別子を含む、共有セッションを開始する要求を受信し、受信した要求に基づいて、前記第1のクライアント識別子に関連付けられている前記第1のクライアントにセッション識別子を提供し、前記第1のクライアント識別子を前記セッション識別子に関連付け、前記セッション識別子に関連付けられるように第2のクライアントから要求を受信し、前記第2のクライアント識別子を前記セッション識別子に関連付け、前記第1のクライアントからメッセージデータを受信し、前記メッセージデータを前記セッション識別子に関連付けられているキューに追加し、前記メッセージデータを前記セッション識別子とともにデータベースに追加し、前記セッション識別子に基づいて、前記メッセージデータを前記キューから前記第2のクライアントに提供するように設定する。
【0007】
本開示の少なくとも1つの例に従って、非一時的なコンピュータ可読記憶媒体について説明する。前記コンピュータ可読記憶媒体は、命令を含む。前記命令は、コンピュータにより実行されるとき、前記コンピュータに、第1のクライアントから、第1のクライアント識別子を含む、共有セッションを開始する要求を受信することと、受信した要求に基づいて、前記第1のクライアント識別子に関連付けられている前記第1のクライアントにセッション識別子を提供することと、前記第1のクライアント識別子を前記セッション識別子に関連付けることと、前記セッション識別子に関連付けられるように第2のクライアントから要求を受信することと、前記第2のクライアント識別子を前記セッション識別子に関連付けることと、前記第1のクライアントからメッセージデータを受信することと、前記メッセージデータを前記セッション識別子に関連付けられているキューに追加することと、前記メッセージデータを前記セッション識別子とともにデータベースに追加することと、前記セッション識別子に基づいて、前記メッセージデータを前記キューから前記第2のクライアントに提供することとをさせる。
【0008】
1つ又は複数のコンピュータのシステムは、オペレーション時に前記システムに動作を実行させるソフトウェア、ファームウェア、ハードウェア、又はそれらの組み合わせを前記システム上にインストールすることにより、特定のオペレーション又は前記動作を実行するように設定されることができる。1つ又は複数のコンピュータプログラムは、データ処理装置により実行されるとき、前記装置に動作を実行させる命令を含むことにより、特定のオペレーション又は前記動作を実行するように設定されることができる。
【0009】
本概要は、以下の発明を実施するための形態でさらに説明される構想の抜粋を簡略化された形で紹介するために提供されるものである。本概要は、特許請求される主題事項の主要特徴又は基本特徴を識別することを目的とするものでもなければ、特許請求される主題事項の範囲を限定することを目的とするものでもない。
【図面の簡単な説明】
【0010】
任意の特定の要素又は動作についての議論を容易に識別させるために、参照番号の中の最上位1桁または数桁は、その要素が最初に登場する図番号を指す。
【0011】
【
図1】本開示の例にかかる、コンテンツサービスプラットフォームをサポートするためのアーキテクチャを提供するコンテンツサービスシステムを示す図である。
【0012】
【
図2】本開示の例にかかる、コンテンツサービスシステムに関連付けられている詳細を示す図である。
【0013】
【
図3】本開示の例にかかる、ウェブソケットストレージを用いてメッセージデータを記憶するための追加の詳細を示す図である。
【0014】
【
図4】本開示の例にかかる、分散システムにデプロイされたウェブソケットサーバと、異なるウェブソケットサーバインスタンスと通信する異なるクライアントとの間の分散通信のためのメッセージ通信図の詳細を示す図である。
【0015】
【
図5】本開示の例にかかる、例示的なデータ構造を示す図である。
【0016】
【
図6】本開示の例にかかる、コンテンツサービスクラスタに関連付けられているストレージ場所においてメッセージデータを受信及び記憶するための方法を示す図である。
【0017】
【
図7】本開示の例にかかる、メッセージデータを受信し、ウェブソケットストレージに関連付けられているキューに記憶するための方法を示す図である。
【0018】
【
図8】本開示の例にかかる、ウェブソケットストレージに関連付けられているキュー内のデータを取り戻すための簡略化された方法を示す図である。
【0019】
【
図9】本開示の態様を実施するために利用可能なコンピューティングシステムの物理的コンポーネント(例えば、ハードウェア)を示すブロック図である。
【0020】
【
図10A】本開示の例を実施するために利用可能なコンピューティングシステムの詳細を示す図である。
【0021】
【
図10B】本開示の例を実施するために利用可能なコンピューティングシステムの詳細を示す図である。
【0022】
【
図11】本開示の例にかかる、コンピューティングシステムにおいて受信されたデータを処理するためのシステムのアーキテクチャを示す図である。
【発明を実施するための形態】
【0023】
以下の詳細な説明では、本明細書の一部を構成し、特定の態様又は例を図示により示した添付図面を参照する。本開示から逸脱することなく、これらの態様を組み合わせたり、他の態様を利用したり、構造変更を行ったりしてもよい。これらの態様は、方法、システム、又は装置として実施されてもよい。したがって、これらの態様は、ハードウェア実現、完全なソフトウェア実現、又はソフトウェア及びハードウェアの態様を組み合わせた実現の形態を取ってもよい。したがって、以下の詳細な説明は限定的であると理解されるべきではなく、本開示の範囲は、添付の特許請求の範囲及びその均等物により限定されるものである。
【0024】
図1は、本開示の例にかかる、コンテンツサービスプラットフォーム112をサポートするためのアーキテクチャを提供するコンテンツサービスシステム100を示す図である。コンテンツサービスシステム100は、コンピューティング装置102と、コンピューティング装置106と、通信ネットワーク110と、コンテンツサービスプラットフォーム112とを含んでもよい。本明細書で使用されるように、用語「コンピューティング装置」は、通信ネットワーク110のような通信ネットワークとの接続を確立することができる任意の構成要素(又は構成要素の集合)を指してもよい。例において、コンピューティング装置は、スマートフォン、タブレットコンピュータ、スマートウェアラブル装置、スマートホーム装置及び/又は汎用コンピュータであってもよい。コンピューティング装置102及び/又はコンピューティング装置106のようなコンピューティング装置は、拡張現実コンテンツなどのコンテンツの共有を容易にする1つ又は複数のアプリケーション(例えば、それぞれ、アプリケーション104及び/又はアプリケーション108)を含んでもよい。したがって、コンピューティング装置102において取得された、又は他の方法で作成されたコンテンツは、通信ネットワーク110及びコンテンツサービスプラットフォーム112を介して、コンピューティング装置106に同期し、又は他の方法で提供されてもよい。このようなコンテンツは、リアルタイム又は基本的にリアルタイムで提供されてもよい。コンテンツサービスプラットフォーム112は、キャリアによりデプロイされたセルラーネットワーク、WiFiネットワーク、RAN、他の無線ネットワーク、有線インターネットプロトコル(IP)ネットワーク、及びそれらの組み合わせなどを介して、コンピューティング装置によりアクセスされてもよい。通信ネットワーク110は、セルラー通信ネットワーク、Wi-Fiアクセスポイントなどを含むが、これらに限定されない無線又は有線ネットワークアクセスを提供するように設定された1つ又は複数の構成要素を含んでもよい。コンピューティング装置102及びコンピューティング装置106が
図1に示されているが、コンテンツサービスシステム100は、コンテンツを受信し、コンテンツサービスプラットフォーム112とやり取りすることができる追加のコンピューティング装置を含んでもよいことを、理解すべきである
【0025】
本開示の例によれば、コンテンツサービスプラットフォーム112は、コンテナ技術を使用して電気通信システムアーキテクチャを仮想化すること、例えば、コンテンツサービスシステム100の一部として提供される1つ又は複数のサーバ及び/又はサービスを仮想化することができる。コンテナ技術を用いた仮想化により、コンテンツサービスプラットフォーム112は、サービスクラスタがシステムアーキテクチャのビルディングブロックであると考えられるマイクロサービスモデルを採用することが可能になる。例えば、コンテンツサービスプラットフォーム112により提供される各機能は、ユニークなサービスクラスタ内で仮想化されてもよい。各サービスクラスタは、コンテンツサービスプラットフォーム112内の異なる機能を実行してもよい。サービスクラスタは、例示的なクラウドネットワーク内の仮想マシン上でホストされてもよい。例示的なクラウドネットワークは、さまざまな仮想マシンが物理的にデプロイされた複数の地理的に異なるデプロイ地点(例えば、データセンター)を含んでもよい。システムをサービスのセットに分解することにより、各サービス(例えば、コンテンツサービスプラットフォーム112により提供される各機能)を独立してデプロイし管理することが可能になる。このため、障害が個々のサービスに局所化されることにより、システムの耐障害性を向上させることができる。
【0026】
いくつかの例において、通信ネットワーク110は、分散データベースと、クラスタリング技術と、データ分析ツールと、メッセージ通信ミドルウェアとを組み込んで、頑健で拡張可能なプラットフォームを提供する。コンテンツサービスプラットフォーム112は、階層化された方法で完全に仮想化された構成要素を使用してもよい。これにより、コンテンツサービスプラットフォーム112を様々なパブリッククラウド環境及びプライベートクラウド環境に統合することを可能にする。
【0027】
本開示の例によれば、コンテンツサービスプラットフォーム112は、少なくともコンピューティング装置102とコンピューティング装置106との間で共有される拡張現実セッションを利用可能にしてもよい。したがって、コンピューティング装置102のアプリケーション104は、コンテンツサービスプラットフォーム112に送信されるウェブソケット要求を作成することにより、コンテンツサービスプラットフォーム112とのウェブソケット接続を開始してもよい。ウェブソケットは、クライアント(例えば、コンピューティング装置102)とサーバ(例えば、コンテンツサービスプラットフォーム112の一部であるサーバ)との間の永続的な接続であってもよい。通常、ウェブソケットは、TCP/IPソケット接続を介してHTTP上で動作する双方向の全二重通信チャネルを提供する。したがって、ウェブソケットは、装置(例えば、コンピューティング装置102及び/又はコンピューティング装置106)とサーバ(例えば、コンテンツサービスプラットフォーム112内のサーバ)との間のメッセージの伝送を容易にし、装置アプリケーション(例えば、アプリケーション104及び/又はアプリケーション108)とウェブサーバとの間のやり取りが、HTTPポーリングのような半二重代替案よりも低いオーバーヘッドを有することを可能にすることにより、装置(例えば、コンピューティング装置102及び/又はコンピューティング装置106)からの、及びサーバ(例えば、コンテンツサービスプラットフォーム112の一部であるサーバ)へのリアルタイムのデータ伝送を容易にする。いくつかの例において、コンピューティング装置102のアプリケーション104から伝送されたデータは、コンテンツサービスプラットフォーム112において受信され、コンピューティング装置106のアプリケーション108に転送されることにより、コンピューティング装置102とコンピューティング装置106との間のリアルタイム通信を可能にしてもよい。例において、コンピューティング装置102とコンピューティング装置106との間で通信されるデータは、インスタントメッセージタイプのテキストメッセージ、及び/又はグラフィック、テキスト、拡張現実コンテンツ、及び/又はコンピューティング装置102及び/又はコンピューティング装置106のうちの1つのディスプレイにレンダリングされる他のオブジェクトであってもよい。
【0028】
コンテンツサービスプラットフォーム112は、コンピューティング装置102により提供されるウェブソケット要求を受信し、ウェブソケットセッション設定の一部としてセッション識別子を生成してもよい。セッション識別子は、コンピューティング装置102のアプリケーション104に提供されてもよい。例において、コンピューティング装置102とコンテンツサービスプラットフォーム112との間のメッセージはセッション識別子に関連付けられてもよい。したがって、コンテンツサービスプラットフォーム112は、各メッセージを維持又は他の方法で管理してもよい。このようなメッセージは、永続的データストレージに記憶されてもよい。例において、コンピューティング装置102は、別のコンピューティング装置(例えば、コンピューティング装置106)をセッションに参加するように招待してもよい。別のコンピューティング装置、例えば、コンピューティング装置106は、その招待に応じて(例えば、コンピューティング装置102、コンテンツサービスプラットフォーム112、又はセッション識別子を提供した別の装置のために)セッションに参加してもよい。コンテンツサービスプラットフォーム112は、コンピューティング装置106がセッションに参加する前に、コンテンツサービスプラットフォーム112に提供された、発生した、又は別の方法で交換されたセッション識別子に関連付けられる全てのメッセージを、コンピューティング装置106に提供することができる。したがって、新たに参加したコンピューティング装置106に提供されるメッセージは、コンピューティング装置102及び/又は同じセッションの一部に属する他のコンピューティング装置に以前に提供された同じメッセージであってもよい。代替として又は追加として、予期せずに切断されたコンピューティング装置は、再接続して、同一セッションの全てのメッセージを永続的なストレージから復元することができる。すなわち、セッション識別子は、同じセッションのコンピューティング装置間のコンテンツ同期を可能にしてもよい。
【0029】
代替として又は追加として、通信セッションが終了したとき(例えば、コンピューティング装置のうちのいずれもコンテンツサービスプラットフォーム112と通信しないとき)、コンテンツサービスプラットフォーム112は、セッションティアダウンを実行し、このようなメッセージをセッション識別子から除去、又は他の方法で関連付けを解除してもよい。したがって、このようなメッセージは、コンテンツサービスプラットフォーム112から除去、消去、又はその他の方法で削除されてもよい。例において、コンピューティング装置又はコンテンツサービスプラットフォーム112は、セッションのディアダウンを開始してもよい。
【0030】
図2は本開示の例にかかる、コンテンツサービスシステム200に関連付けられている詳細を示す図である。コンテンツサービスシステム200は、先に説明されたコンテンツサービスシステム100と同じであってもよいし、似ていてもよい。例において、コンテンツサービスプラットフォーム202は、先に説明されたコンテンツサービスプラットフォーム112と同じであってもよいし、似ていてもよい。コンテンツサービスプラットフォーム202は、ロードバランサ206と、ウェブソケットサーバクラスタ208と、コンテンツサービスクラスタ210と、データベース212とを含んでもよい。データベース212は、オブジェクトストレージ214及びオブジェクトメタデータストレージ216を含んでもよい。コンテンツサービスプラットフォーム202はまた、ウェブソケットストレージ218を含んでもよい。ロードバランサ206と、ウェブソケットサーバクラスタ208と、コンテンツサービスクラスタ210と、データベース212と、ウェブソケットストレージ218との各々は、例示的な分散クラウドネットワーク内の仮想マシン上でホストされてもよい。ウェブソケットクライアント204、例えばコンピューティング装置102(
図1)のアプリケーション104(
図1)は、コンテンツサービスプラットフォーム202のロードバランサ206への要求を発行してもよい。この要求は、別のアプリケーション108(
図1)へのメッセージデータを送信することであってもよく、セッション作成要求又は他のデータ(例えば、グラフデータ)及び既存のセッション識別子を含んでもよい。ロードバランサ206は、クライアントトラフィックをウェブソケットサーバクラスタ208に均等に分配するように設定されてもよい。ここで、ウェブソケットサーバクラスタ208は、複数のウェブソケットサーバを含んでもよい。したがって、リソース消費量に基づいて、ロードバランサ206は、少なくとも1つのウェブソケットサーバを決定するか、又は他の方法で識別して、ロードバランサ206においてウェブソケットクライアント204から受信したメッセージデータを受け渡してもよい。
【0031】
ウェブソケットサーバクラスタ208は、ウェブソケットクライアント204とのウェブソケット接続を維持し、ウェブソケットクライアント204との間でメッセージデータを送受信するように設定されている。例において、ウェブソケットサーバクラスタ208からのウェブソケットサーバは、ウェブソケットクライアント204から受信したメッセージデータをウェブソケットストレージ218に送信してもよい。ここで、メッセージデータは、後で別のクライアントから取り出されるためにキュー220に追加され、その後、別のクライアントに送信される。追加として、メッセージデータの非同期リカバリを可能にするために、ウェブソケットサーバは、コンテンツサービスクラスタ210を使用してメッセージデータのコピーをバックアップ又は他の方法で維持してもよい。コンテンツサービスクラスタ210において作成されたメッセージデータのコピーは、ユーザのアプリケーションが切断された場合、又は該アプリケーションが進行中のセッションに途中で参加した場合、該アプリケーションのメッセージデータを復元するために使用されてもよい。すなわち、コンテンツサービスクラスタ210は、メッセージデータを格納し、及び/又はウェブソケットクライアント204からのデータを取り戻すための1つ又は複数の要求にサービスを提供することを役割としてもよい。例において、コンテンツサービスクラスタ210は、メッセージデータをデータベース212に記憶させてもよい。ここで、メッセージデータのオブジェクト部分はデータベース212内のオブジェクトストレージ214として記憶され、メッセージデータのメタデータ部分は、データベース212内のオブジェクトメタデータストレージ216として記憶されてもよい。例において、コンテンツサービスクラスタ210は、データベース212からメッセージデータを取り戻してもよい。すなわち、コンテンツサービスクラスタ210は、オブジェクトストレージ214に記憶されているメッセージデータのオブジェクト部分と、オブジェクトメタデータストレージ216に記憶されているメッセージデータのメタデータ部分とを取り戻してもよい。例において、コンテンツサービスクラスタ210は、データベース212からメッセージデータを取り戻してもよい。ここで、メッセージデータのオブジェクト部分はオブジェクトストレージ214から取り戻され、メッセージデータのメタデータ部分は、データベース212内のオブジェクトメタデータストレージ216から取り戻されてもよい。
【0032】
図3は、本開示の例にかかる、ウェブソケットストレージを用いてメッセージデータを記憶するための追加の詳細を示す図である。例として、コンピューティング装置102と同一又は類似のコンピューティング装置302は、コンピューティング装置314宛てのメッセージを送信してもよい。コンピューティング装置314は、コンピューティング装置106と同じ又は類似していてもよい。このメッセージは、コンテンツサービスプラットフォーム304内のウェブソケットサーバクラスタ306のウェブソケットサーバインスタンス306aにおいて受信されてもよい。ウェブソケットサーバクラスタ306のウェブソケットサーバインスタンス306aは、メッセージデータをウェブソケットストレージ308に提供してもよい。ウェブソケットストレージ308は、データベースロードバランサ310とデータベースサーバ312とを含んでもよい。データベースロードバランサ310は、データベースサーバ(312a~312c)を識別及び/又は選択してもよい。選択されたデータベースサーバ(312a~312c)は、プッシュ(push)オペレーションのようなデータベースオペレーションを介して、セッション管理キュー(例えば316a)にメッセージを追加してもよい。実質的に同時に、ウェブソケットサーバインスタンス306bは、セッション管理キュー316aから任意の利用可能なメッセージをフェッチングする呼び出しオペレーションを開始してもよい。異なるセッションは、個別のセッション管理キューを有してもよい。例えば、セッション管理キュー316bは、異なるセッションのためのものであってもよく、データベースサーバ312a及び/又はデータベースサーバ312bを介してアクセスされることができる。別の異なるセッションを確立する場合、別のセッション管理キューを作成し、データベースサーバ312a~cのうちの1つ又は複数と通信してもよい。セッション管理キューは、新しいセッションの要求に応じて作成され、セッションが不要になったときに除去されるので、例えば、データベースサーバ312cは、必要に応じて、新しいセッション管理キューと通信してもよい。このため、セッション管理キュー(例えば、セッション管理キュー316a~b)が必要に応じて作成及び除去される。さらに、データベースサーバ312a~cは、負荷及び可用性に応じて、1つ又は複数のセッション管理キュー(例えば、316a~b)を管理してもよい。
【0033】
いくつかの例において、セッション管理キュー316a及び/又はセッション管理キュー316bは、ランダムアクセスメモリ、揮発性メモリ、又は低アクセス時間を有する他のメモリなどのメモリに記憶されてもよい。同じセッション内のクライアント(例えば、コンピューティング装置102及び/又はコンピューティング装置106)は、異なるウェブソケットサーバインスタンス(例えば、ウェブソケットサーバインスタンス306a及び/又はウェブソケットサーバインスタンス306b)に接続され、どのサーバインスタンスに接続されているかを知る必要なく、又は特定する必要なく、分散的な方式で通信することができる。もちろん、
図3ではデータベースサーバ312が示されているが、より多くのデータベースサーバ312又はより少ないデータベースサーバ312が考えられる。例において、コンピューティング装置302は、コンテンツサービスプラットフォーム304を介してコンピューティング装置314にデータを送信してもよい。追加として、コンピューティング装置314は、コンテンツサービスプラットフォーム304を介してコンピューティング装置302にデータを送信してもよい。したがって、コンピューティング装置302及びコンピューティング装置314の両方は、(例えば、ビデオ及び/又は画像データに同じ拡張現実コンテンツを含めることによって)同じ又は同期された拡張現実コンテンツをそれぞれの装置上に表示させることができる。
【0034】
いくつかの例において、セッション管理キュー316aは、分割されてセッション情報ストレージ及びメッセージキューを含んでもよい。セッション情報ストレージは、セッションデータと、同じセッション内のクライアントのリストとを含んでもよい。例えば、コンピューティング装置102のアプリケーション104とコンピューティング装置106のアプリケーション108とが同じセッション内で通信している場合、セッション情報ストレージは、アプリケーション及び/又はコンピューティング装置を識別する一意のクライアント識別子を含んでもよい。いくつかの例において、メッセージキューは、共有されるコンテンツデータを含む。すなわち、共有されるコンテンツデータは、拡張現実コンテンツデータを含んでよい。したがって、メッセージキューは、拡張現実コンテンツのようなコンテンツを再作成するための情報を説明又はその他の方法で提供するオブジェクトに固有の情報、テキスト、色、座標などを含んでもよい。
【0035】
図4は本開示の例にかかる、分散システムにデプロイされたウェブソケットサーバと、異なるウェブソケットサーバインスタンスと通信する異なるクライアントとの間の分散通信のためのメッセージ通信図の詳細を示す図である。より具体的には、クライアント(例えばクライアントA 402)は、新しいセッションを開始するために、410においてウェブソケットサーバ406にセッション作成要求を送信してもよい。クライアントA 402は、先に説明されたコンピューティング装置102と同一又は類似であってもよい。ウェブソケットサーバ406は、先に説明されたウェブソケットサーバインスタンス306に対応してもよい。例において、該新しいセッションは、共有拡張現実セッション用のものであってもよい。ウェブソケットサーバ406は、セッション識別子(session_id)を生成し、412において、生成されたセッション識別子をウェブソケットストレージ408に追加し、セッション識別子をアクティブなセッション識別子として指定してもよい。いくつかの例において、クライアントA 402を一意に識別するクライアント識別子をウェブソケットストレージ408においてセッション識別子に関連付けてもよい。セッション識別子をウェブソケットストレージ408に追加すると、及び/又はクライアントA 402のクライアント識別子をセッション識別子に関連付けると、ウェブソケットストレージ408は、414において、そのようなセッションが既にウェブソケットサーバ406に追加されたことを示す「ok」又は確認応答を提供してもよい。いくつかの例において、ウェブソケットストレージ408は、1つ又は複数のクライアントから送信されたメッセージデータを追加又は記録するために、初期のキュー又はリストをさらに作成してもよい。セッション識別子は、その後、416においてクライアントA 402に送信されてもよい。
【0036】
418において、クライアントA 402は、クライアントB 404を共有セッションに招待してもよい。ここで、共有セッションは、実世界に存在するオブジェクトがコンピュータにより生成された知覚情報により拡張され、描かれ、描画され、やり取りすることが可能にされるなどすることができる、実世界環境のやり取り体験を提供する共有拡張現実セッションであってもよい。例において、実世界環境に追加された情報は、共有セッションに参加しているユーザ間で共有されてもよい。したがって、クライアントA 402は、セッション識別子を含む招待をクライアントB 404に送信してもよい。クライアントB 404は、コンピューティング装置106と同一又は類似であってもよい。420において、クライアントA 402は、ウェブソケット接続及び416において受信したセッション識別子を使用してセッションに接続してもよい。422において、クライアントB 404は、ウェブソケット接続及び418において受信したセッション識別子を使用してセッションに接続してもよい。ウェブソケットサーバ406は、その後、424において、新たに追加されたクライアントであるクライアントB 404を、ウェブソケットストレージ408に追加させるか、又はクライアントB 404を一意に識別するクライアント識別子をセッション識別子に関連付けてもよい。追加されると、ウェブソケットストレージ408は、426において、クライアントB 404が既にこのようなセッションに参加したことを示す「ok」をウェブソケットサーバ406に返事してもよい。
【0037】
例において、クライアントA 402は、クライアントB 404及び/又はセッションの他の参加者にメッセージを送信することを望む場合がある。したがって、428において、メッセージデータをウェブソケットサーバ406に送信してもよい。ウェブソケットサーバ406は、430において、セッション識別子の一部である、又は、セッション識別子に関連付けられているクライアントについての要求を生成し、また、430において、該要求をウェブソケットストレージ408に送信してもよい。ウェブソケットストレージ408は、432においてクライアントのリストを返してもよい。この例において、クライアントA 402及びクライアントB 404のクライアント識別子は、同じリストに属するものとして返されてもよい。その後、ウェブソケットサーバ406は、434において、リスト内のどの参加者又はメンバーが(例えば、クライアント識別子を介して)メッセージデータを送信するかを決定してもよい。例えば、クライアントA 402が428においてメッセージを送信する場合、ウェブソケットサーバ406は、ウェブソケットストレージ408からクライアントのリストを受信し、セッション識別子に関連付けられている名前のリストに基づいて、クライアントA 402以外のクライアントがメッセージを受信すべきであると決定してもよい。したがって、ウェブソケットサーバ406は、434において、このようなメッセージをブロードキャストメッセージとしてサーバからクライアントA 402以外のクライアント(例えば、
図4に示すクライアントB 404)に送信してもよい。そのため、クライアントB 404は、クライアントA 402から送信されたメッセージを受信することができる。
【0038】
図5は本開示の例にかかる、例示的なデータ構造502を示す図である。データ構造502は、ウェブソケットストレージ408(
図4)において常駐してもよい。及び/又は、セッション識別子504を含んでもよい。セッション識別子504は、ウェブソケットサーバ406により生成され、共有拡張現実セッションを一意に識別する。例において、表示装置において表示されるコンテンツを作成する及び/又は同期させるために、クライアント(例えば、コンピューティング装置)に関連付けられているローカルセッションにおいてそのようなオブジェクトを作成するために使用されるオブジェクト情報506をデータ構造502に含めてもよい。したがって、データ構造502は、オブジェクト情報506と、タイムスタンプ510とを含んでもよい。オブジェクト情報506は、各クライアント(例えば、コンピューティング装置)により作成されたオブジェクトに関連付けられているグラフィックオブジェクト(例えば、線、点、ドット、形状、画像など)を識別してもよい。いくつかの例において、オブジェクトが複数のオブジェクトを含んでもよいため、オブジェクト情報506は、他のオブジェクトを参照してもよく、上述したようなオブジェクト特定情報を含んでもよい。例えば、複数の線やドットにより、正方形や円などの形状を作成してもよい。オブジェクト情報506により、他のオブジェクト情報506をオブジェクト又は形状に関連付けてもよい。他の場合には、オブジェクト情報506は、オブジェクトを記述する他の情報を含んでもよい。例えば、オブジェクト情報506は、座標情報と、色情報と、形状タイプ情報と、ブラシストロークタイプ情報とを含んでもよい。
【0039】
データ構造502はまた、オブジェクト情報506を作成するユーザを識別するユーザ識別子(USER_ID)508を含んでもよい。したがって、ウェブソケットサーバは、ユーザ識別子508に基づいて、どの参加者にメッセージデータを送信するかを決定してもよい。タイムスタンプ510は、オブジェクト情報506を再生、バックアップ及び/又は編集するために使用されてもよい。いくつかの例において、タイムスタンプ510は、記録の開始などの開始点からオフセットされてもよいし、又は現在又は今の時刻及び日付に関連付けられてもよい。
【0040】
図6を参照し、本開示の例に従って、コンテンツサービスクラスタに関連付けられている記憶場所においてメッセージデータを受信し記憶するための簡略化された方法600を説明する。方法600のステップの一般的な順序が
図6に示されている。全体的には、方法600は602で始まり、612で終わる。方法600は、より多くのステップ又はより少ないステップを含んでもよいし、又は、ステップの順序を
図6に示されたステップとは異なるように構成してもよい。方法600は、コンピュータシステムにより実行されるコンピュータ実行可能な命令のセットとして実行され、コンピュータ可読媒体上に符号化又は記憶されてもよい。例示的な態様において、方法600は、クラウド環境内の1つ又は複数のサーバにより実行される。例えば、方法600の1つ又は複数の態様は、コンテンツサービスプラットフォーム112により実行されてもよい。しかしながら、方法600の態様は、コンテンツサービスプラットフォーム112に加えて、1つ又は複数の処理装置により実行されてもよいことを、理解すべきである。さらに、方法600は、プロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、システムオンチップ(SOC)、ニューラル処理ユニット、又は他のハードウェア装置に関連付けられるゲート又は回路により実行されてもよい。以下では、方法600は、
図1~5に関連して説明されたシステム、コンポーネント、モジュール、ソフトウェア、データ構造等を参照して説明すべきである。
【0041】
方法600は、602において開始し、604に進む。604においては、クライアントからのメッセージデータをロードバランサにおいて受信する。例えば、コンピューティング装置102上で実行するアプリケーション104は、コンピューティング装置106をセッションに招待し、コンピューティング装置106上で実行するアプリケーション108とデータを共有してもよい。したがって、コンピューティング装置102により送信されたメッセージデータは、ロードバランサ(例えば、ロードバランサ206)において受信されてもよい。アプリケーション104及び/又はコンピューティング装置102、並びにアプリケーション108及び/又はコンピューティング装置106が同じセッション識別子を使用して通信できるように、メッセージデータに含まれる共有コンテンツに加えて、セッション識別子をメッセージデータに含めてもよい。方法600は606に進んでもよい。ここで、ロードバランサは、ウェブソケットサーバクラスタからウェブソケットサーバを決定してもよい。例において、選択されたウェブソケットサーバは、利用可能なリソースを有するウェブソケットサーバ、セッション識別子に関連付けられている1つ又は複数のクライアントに物理的により近いウェブソケットサーバ、他のウェブソケットサーバよりも低いラウンドトリップ遅延を有するウェブソケットサーバなどに対応してもよい。いくつかの例において、ウェブソケットサーバクラスタは、ウェブソケットサーバクラスタ208と同一であってもよいし、又は似ていてもよい。その後、ロードバランサは、クライアントから受信したメッセージデータを、選択されたウェブソケットサーバに転送してもよいし、他の方法で送信してもよい。例において、決定されたウェブソケットサーバはまた、メッセージデータをウェブソケットストレージ218などのウェブソケットストレージに転送又は他の方法で送信してもよい。ここで、メッセージデータは、後で別のクライアントから取り出されるためにキューに追加され、その後、別のクライアントに送信されてもよい。
【0042】
方法600は、次いで608に進んでもよい。ここで、決定されたウェブソケットサーバは、受信したメッセージデータをコンテンツサービスクラスタに提供してもよい。610において、メッセージデータを記憶してもよい。例えば、コンテンツサービスクラスタは、メッセージデータをデータベースに記憶させてもよい。ここで、メッセージデータのオブジェクト部分はオブジェクトストレージ(例えば、
図2に示すオブジェクトストレージ214)に格納され、メッセージデータのメタデータ部分はオブジェクトメタデータストレージ(例えば、
図2に示すオブジェクトメタデータストレージ216)として記憶されてもよい。メッセージデータが記憶されると、方法600は終了してもよい。
【0043】
メッセージデータの非同期リカバリを可能にするために、ウェブソケットサーバは、コンテンツサービスクラスタ210を使用してバックアップとして機能してもよいし、又はメッセージデータのコピーを他の方法で維持してもよい。コンテンツサービスクラスタにおいて作成されたメッセージデータのコピーは、ユーザのアプリケーションが切断された場合、又は該アプリケーションが進行中のセッションに途中で参加した場合、該アプリケーションのメッセージデータを復元するために使用されてもよい。すなわち、コンテンツサービスクラスタは、メッセージデータを格納し、及び/又はウェブソケットクライアントからのデータを取り戻すために作成された1つ又は複数の要求にサービスを提供することを役割としてもよい。例において、コンテンツサービスクラスタは、メッセージデータをデータベースに記憶させてもよい。ここで、メッセージデータのオブジェクト部分はオブジェクトストレージとして記憶され、メッセージデータのメタデータ部分は、データベース内のオブジェクトメタデータストレージとして記憶されてもよい。
【0044】
次に
図7を参照し、本開示の例に従って、メッセージデータを受信し、ウェブソケットストレージに関連付けられているキューに記憶するための簡略化された方法700を説明する。方法700のステップの一般的な順序が
図7に示されている。全体的には、方法700は702で始まり、712で終わる。方法700は、より多くのステップ又はより少ないステップを含んでもよいし、又は、ステップの順序を
図7に示されたステップとは異なるように構成してもよい。
【0045】
方法700は、コンピュータシステムにより実行されるコンピュータ実行可能な命令のセットとして実行され、コンピュータ可読媒体上に符号化又は記憶されてもよい。例示的な態様において、方法700は、クラウド環境内の1つ又は複数のサーバにより実行される。例えば、方法700の1つ又は複数の態様は、コンテンツサービスプラットフォーム112により実行されてもよい。しかしながら、方法700の態様は、コンテンツサービスプラットフォーム112に加えて、1つ又は複数の処理装置により実行されてもよいことを、理解すべきである。さらに、方法700は、プロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、システムオンチップ(SOC)、ニューラル処理ユニット、又は他のハードウェア装置に関連付けられるゲート又は回路により実行されてもよい。以下では、方法700は、
図1~6に関連して説明されたシステム、コンポーネント、モジュール、ソフトウェア、データ構造、ユーザインターフェース等を参照して説明すべきである。
【0046】
方法700は、702において開始し、704に進む。704においては、クライアント(例えば、コンピューティング装置102)からのメッセージデータをロードバランサにおいて受信する。例えば、コンピューティング装置102上で実行するアプリケーション104は、コンピューティング装置106を招待し、コンピューティング装置106上で実行するアプリケーション108とデータを共有してもよい。したがって、メッセージ通信データは、ロードバランサ(例えば、ロードバランサ206)において受信されてもよい。アプリケーション104及び/又はコンピューティング装置102、並びにアプリケーション108及び/又はコンピューティング装置106が同じセッション識別子を使用して通信できるように、メッセージ通信データに含まれる共有コンテンツに加えて、セッション識別子をメッセージ通信データに含めてもよい。方法700は706に進んでもよい。ここで、ロードバランサは、ウェブソケットサーバクラスタから、受信したメッセージデータを転送するウェブソケットサーバを決定してもよい。例において、選択されたウェブソケットサーバは、利用可能なリソースを有するウェブソケットサーバ、セッション識別子に関連付けられている1つ又は複数のクライアントに物理的により近いウェブソケットサーバ、他のウェブソケットサーバよりも低いラウンドトリップ遅延を有するウェブソケットサーバなどに対応してもよい。いくつかの例において、ウェブソケットサーバクラスタは、ウェブソケットサーバクラスタ208と同一であってもよく、又は似ていてもよい。
【0047】
その後、方法700は708に進んでもよい。ここで、決定されたウェブソケットサーバは、メッセージデータをオブジェクトストレージサーバに送信してもよい。例において、オブジェクトストレージサーバは、例えば、710においてメッセージデータをキューに記憶するために、データベース又はメモリを含んでもよいし、又は他の方法でデータベース又はメモリにアクセスしてもよい。つまり、オブジェクトストレージサーバは、後で取り戻すためにメッセージデータをキューにプッシュしてもよい。メッセージデータが記憶されると、方法700は終了してもよい。例において、オブジェクトストレージサーバはウェブソケットストレージ218と同一又は類似であり、キューはキュー220と同一又は類似である。
【0048】
次に
図8を参照し、本開示の例に従って、ウェブソケットストレージに関連付けられているキュー内のデータを取り戻すための簡略化された方法800を説明する。方法800のステップの一般的な順序が
図8に示されている。全体的には、方法800は802で始まり、810で終わる。方法800は、より多くのステップ又はより少ないステップを含んでもよいし、又は、ステップの順序を
図8に示されたステップとは異なるように構成してもよい。方法800は、コンピュータシステムにより実行されるコンピュータ実行可能な命令のセットとして実行され、コンピュータ可読媒体上に符号化又は記憶されてもよい。例示的な態様において、方法800は、クラウド環境内の1つ又は複数のサーバにより実行される。例えば、方法800の1つ又は複数の態様は、コンテンツサービスプラットフォーム112により実行されてもよい。しかしながら、方法800の態様は、コンテンツサービスプラットフォーム112に加えて、1つ又は複数の処理装置により実行されてもよいことを、理解すべきである。さらに、方法800は、プロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、システムオンチップ(SOC)、ニューラル処理ユニット、又は他のハードウェア装置に関連付けられるゲート又は回路により実行されてもよい。以下では、方法800は、
図1~7に関連して説明されたシステム、コンポーネント、モジュール、ソフトウェア、データ構造、ユーザインターフェース等を参照して説明する。
【0049】
方法800は、802において開始し、804に進む。804においては、ウェブソケットサーバ又はオブジェクトストレージサーバのうちの少なくとも1つが、以前にキューにプッシュされたメッセージデータをウェブソケットストレージから取り戻す。例えば、キュー220は、第1のクライアントにおいて作成されたメッセージデータを含んでもよい。一旦取り戻されると、メッセージデータは、第1のクライアントと同じセッションに関連付けられている他のクライアントに送信されてもよい。例において、各キューは、セッション識別子に関連付けられてもよい。ここで、各セッション識別子は、複数の一意のクライアント識別子に関連付けられてもよい。したがって、セッション識別子に関連付けられているクライアントに基づいて、808において、メッセージデータは、メッセージデータを最初に送信したクライアント以外のクライアントに送信されてもよい。メッセージデータがキューから取り戻されると、806において、メッセージデータは、ロードバランサ206などのロードバランサに送信されてもよい。その後、ロードバランサは、セッション識別子に関連付けられた他のクライアントにメッセージデータを送信してもよい。その後、方法800は、810において終了してもよい。
【0050】
図9は、本開示の態様を実施するために利用可能なコンピューティングシステム902の物理的コンポーネント(例えば、ハードウェア)を示すブロック図である。以下に説明されるコンピューティングシステム902コンポーネントは、上述したコンピューティング装置及び/又は処理装置に適合してもよい。基本的な設定において、コンピューティングシステム902は、少なくとも1つの処理ユニット920とシステムメモリ906とを含んでもよい。コンピューティングシステムの設定及びタイプによっては、システムメモリ906は、揮発性ストレージ(例えば、ランダムアクセスメモリ(RAM))、不揮発性ストレージ(例えば、リードオンリーメモリ(ROM))、フラッシュメモリ、又はこのようなメモリの任意の組み合わせを含んでもよいが、これらに限定されない。
【0051】
システムメモリ906は、オペレーティングシステム922と、本明細書に記載されたシステムによりサポートされる1つ又は複数のコンポーネントのようなソフトウェアアプリケーション928を実行するのに適した1つ又は複数のプログラムモジュール924とを含んでもよい。例として、システムメモリ906は、ロードバランサ926と、ウェブソケットサーバ930と、コンテンツサーバ932と、ウェブソケットストレージサーバ938とを含んでもよい。いくつかの例において、コンピューティングシステム902は、コンテンツサービスプラットフォーム112の1つ又は複数の機能を実行してもよい。コンピューティングシステム902により提供される各機能は、ユニークなサービスクラスタ内で仮想化されてもよい。各サービスクラスタは、コンテンツサービスプラットフォーム112の異なる機能を実行してもよい。サービスクラスタは、例示的なクラウドネットワーク内の仮想マシン上でホストされてもよい。例示的なクラウドネットワークは、さまざまな仮想マシンが物理的にデプロイされた複数の地理的に異なるデプロイ地点(例えば、データセンター)を含んでもよい。コンピューティングシステム902は複数のアプリケーション928を示しているが、コンピューティングシステム902は単一のアプリケーション928を含んでもよい。したがって、コンテンツサービスプラットフォーム112の機能のうちの少なくともいくつかを一緒に実行する複数の分散コンピューティングシステム902が存在してもよい。
【0052】
例において、ロードバランサ926は、ロードバランサ206と同一であってもよいし、又は似ていてもよい。いくつかの例において、ウェブソケットサーバ930は、ウェブソケットサーバクラスタ208のウェブソケットサーバと同一又は類似である。同様に、コンテンツサーバ932は、コンテンツサーバクラスタ210のコンテンツサーバと同一又は類似である。ウェブソケットストレージサーバ938は、ウェブソケットストレージ218についてのサーバと同一であってもよいし、又は似ていてもよい。例えば、オペレーティングシステム922は、コンピューティングシステム902の操作を制御するように適してもよい。
【0053】
さらに、本開示の例は、グラフィックライブラリ、他のオペレーティングシステム、又は任意の他のアプリケーションプログラムに関連して実行されてもよいが、任意の特定のアプリケーション又はシステムに限定されない。コンピューティングシステム902のこの基本的な設定は、
図9において、アイテム934内のそれらのコンポーネントにより示されている。コンピューティングシステム902は、追加の特徴又は機能を有してもよい。例えば、コンピューティングシステム902は、磁気ディスク、光ディスク、又はテープなどの追加のデータストレージ装置(取外し可能な装置及び/又は取外し不可能な装置)をさらに備えてもよい。このような追加のストレージは、
図9において、取り外し可能なストレージ装置908と取り外し不可能なストレージ装置910とにより示されている。例において、オブジェクトストレージ936は、オブジェクトストレージ214と同一であってもよいし、又は似ていてもよい。
【0054】
上述したように、複数のプログラムモジュールおよびデータファイルがコンピューティングシステム902に記憶されてもよい。プログラムモジュール924(例えば、アプリケーション928)は、処理ユニット920上で実行されるとき、本明細書で説明された態様を含むがそれらに限定されないプロセスを実行してもよい。本開示の態様に従って使用できる他のプログラムモジュールは、電子メール及び連絡先アプリケーション、ワープロアプリケーション、スプレッドシートアプリケーション、データベースアプリケーション、スライドプレゼンテーションアプリケーション、製図プログラム、又はコンピュータ支援プログラムなどを含んでもよい。
【0055】
さらに、本開示の例は、電気回路、個別電子部品、論理ゲートを含むパッケージチップ又は集積電子チップ、マイクロプロセッサを利用する回路、又は電子部品又はマイクロプロセッサを含む単一のチップ上で実施されてもよい。例えば、本開示のいくつかの実例は、
図9に示される各コンポーネント又は複数のコンポーネントが単一の集積回路上に集積化することが可能であるシステムオンチップ(SOC)を介して実施されてもよい。このようなSOC装置は、一つ又は複数の処理ユニット、グラフィックスユニット、通信ユニット、システム仮想化ユニット、及び様々なアプリケーション機能を含み、これらの全てが単一の集積回路としてチップ基板上に集積化される(又は「書き込み」される)ことができる。SOCを介して操作する場合、本明細書に記載されたクライアントがプロトコルを切り替える能力に関する機能は、単一の集積回路(チップ)上のコンピューティングシステム902の他のコンポーネントと集積化された特定用途向けロジックを介して動作してもよい。本開示の例はまた、AND、OR、及びNOTなどの論理演算を実行できる、機械、光学、流体、及び量子技術を含むがそれらに限定されない他の技術を使用して実施されてもよい。さらに、本開示の例は、汎用コンピュータ内で、又は任意の他の回路又はシステム内で実施されてもよい。
【0056】
コンピューティングシステム902は、キーボード、マウス、ペン、音響又は音声入力装置、タッチ又はスワイプ入力装置など、1つ又は複数の入力装置912をさらに有してもよい。ディスプレイ、スピーカ、プリンタなどの出力装置914がさらに含まれてもよい。上記の装置は例であり、他の装置を使用してもよい。コンピューティングシステム902は、コンピューティング装置102及び/又はコンピューティング装置106のような他のコンピューティング装置918との通信を可能にする1つ又は複数の通信接続916を含んでもよい。好適な通信接続916の例は、無線周波数(RF)送信機、受信機及び/又はトランシーバ回路、ユニバーサルシリアルバス(USB)、パラレルポート、及び/又はシリアルポートを含むが、これらに限定されない。
【0057】
本明細書で使用されるコンピュータ可読媒体という用語は、コンピュータ記憶媒体を含んでもよい。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、又はプログラムモジュールのような、情報を記憶するための任意の方法又は技術で実現される揮発性及び不揮発性の取り外し可能な媒体及び取り外し不可能な媒体を含んでもよい。システムメモリ906、取り外し可能なストレージ装置908及び取り外し不可能なストレージ装置910は、いずれもコンピュータ記憶媒体の一例(例えば、メモリストレージ)である。コンピュータ記憶媒体は、RAM、ROM、電気的に消去可能なリードオンリーメモリ(EEPROM)、フラッシュメモリ又は他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)又は他の光学的ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又は他の磁気ストレージ装置、又は情報を記憶するために使用され、コンピューティングシステム902によってアクセス可能な任意の他の製品を含んでもよい。任意のそのようなコンピュータ記憶媒体は、コンピューティングシステム902の一部であってもよい。コンピュータ記憶媒体は、搬送波又は他の伝搬又は変調されたデータ信号を含まない。
【0058】
通信媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、又は変調されたデータ信号内の他のデータ、例えば搬送波又は他の移送機構によって具現化することができるとともに、任意の情報伝達媒体を含む。「変調されたデータ信号」という用語は、信号内に情報を符号化するように設定又は変更された1つ又は複数の特徴を有する信号を表してもよい。限定ではなく、一例として、通信媒体は、有線ネットワーク又は直接有線接続のような有線媒体、及び音響、無線周波数(RF)、赤外、及び他の無線媒体のような無線媒体を含んでもよい。
【0059】
図10A及び
図10Bは、本開示の例を実施するために利用可能な携帯電話、スマートフォン、(スマートウォッチのような)ウェアラブルコンピュータ、タブレットコンピュータ、デスクトップコンピュータ、ラップトップコンピュータなどのようなコンピューティングシステム1002を示す。
図10Aを参照すると、これらの態様を実現するためのコンピューティングシステム1002の一態様が示されている。基本的な設定において、コンピューティングシステム1002は、入力要素及び出力要素の両方を有するデスクトップコンピュータである。コンピューティングシステム1002は、一般的には、ディスプレイ1006と、ユーザがコンピューティングシステム1002に情報を入力することを可能にする1つ又は複数の入力ボタン1004a~004eとを備える。コンピューティングシステム1002のディスプレイ1006は、入力装置(例えば、タッチスクリーンディスプレイ)として機能してもよい。
【0060】
オプションの副入力要素1008が含まれる場合、オプションの副入力要素1008によって、更なるユーザ入力が可能になる。副入力要素1008は、ロータリースイッチ、ボタン、又は任意の他のタイプの手動入力要素であってもよい。代替としての態様において、コンピューティングシステム1002は、より多くの入力要素又はより少ない入力要素を組み込んでもよい。
【0061】
さらに別の代替の例において、コンピューティングシステム1002は、セルラー電話などの携帯電話システムである。コンピューティングシステム1002はさらに、オプションのキーパッド1014/1026を含んでもよい。オプションのキーパッド1014は、物理キーパッド又はタッチスクリーンディスプレイ上で生成される「ソフト」キーパッドであってもよい。
【0062】
様々な例において、出力要素は、グラフィカルユーザインターフェース(GUI)を表示するためのディスプレイ1006/1022と、視覚的インジケータ1010(例えば、発光ダイオード1034)と、及び/又はオーディオトランスデューサ1012(例えば、スピーカ)とを含む。さらに別の態様において、コンピューティングシステム1002は、オーディオ入力(例えば、マイクロホンジャック)、オーディオ出力(例えば、ヘッドフォンジャック)、及びビデオ出力(例えば、HDMI(登録商標)ポート)のような入力及び/又は出力ポートを組み込むことで、外部装置との間で信号の送受信を行う。
【0063】
図10Bはモバイルコンピューティングシステムの一態様のアーキテクチャを示すブロック図である。すなわち、コンピューティングシステム1002は、システム(例えば、アーキテクチャ)1002を組み込むことで、いくつかの態様を実現することができる。いくつかの例において、システム1002は、一つ又は複数のアプリケーション(例えば、ブラウザ、電子メール、カレンダー、連絡先マネージャ、メッセージ通信クライアント、ゲーム、及びメディアクライアント/プレーヤ)を実行することができる「コンピューティングシステム」として実現される。いくつかの態様において、システム1002は、デスクトップコンピュータのようなコンピューティングシステムとして統合される。
【0064】
1つ又は複数のアプリケーションプログラム1038は、1036にロードされ、オペレーティングシステム1040上で、又はオペレーティングシステム1040に関連して実行してもよい。アプリケーションプログラムの例としては、電話ダイヤルプログラム、電子メールプログラム、個人情報管理(PIM)プログラム、ワープロプログラム、スプレッドシートプログラム、インターネットブラウザプログラム、メッセージ通信プログラム、地図プログラム、ビデオプラットフォーム、ビデオ合成アプリケーションなどが含まれる。コンピューティングシステム1002は、メモリ1036内の不揮発性記憶領域1042をさらに含む。不揮発性記憶領域1042は、システム1002の電源が切断されたときに失われてはならない永続的な情報を記憶するために使用されてもよい。アプリケーション1038は、電子メール又は電子メールアプリケーションによって使用される他のメッセージなど、不揮発性記憶領域1042内の情報を使用し、不揮発性記憶領域1168に記憶してもよい。同期アプリケーション(図示せず)もシステム1002上に常駐し、ホストコンピュータ上に常駐する対応の同期アプリケーションとやり取りして、不揮発性記憶領域1042に格納された情報とホストコンピュータ上に記憶された対応の情報との同期を維持するようにプログラムされる。他のアプリケーションは、不揮発性記憶領域1042にロードされ、本明細書で説明されたコンピューティングシステム1002上で動作することができることを理解すべきである。
【0065】
コンピューティングシステム1002は、電源1044を有する。当該電源1044は、1つ又は複数のバッテリとして実現されてもよい。電源1044はさらに、ACアダプタ又はバッテリを補充又は再充電する電源付き格納台などの外部電源を含んでもよい。
【0066】
コンピューティングシステム1002はさらに、無線周波数通信を送受信する機能を実行する無線インターフェース層1032を含んでもよい。無線インターフェース層1032は、通信キャリア又はサービスプロバイダを介してシステム1002と「外部世界」との間の無線接続を容易にする。無線インターフェース層1032との間の送信は、オペレーティングシステム1040の制御の下で行われる。言い換えれば、無線インターフェース層1032によって受信された通信は、オペレーティングシステム1040を介してアプリケーションプログラム1038に配布することができ、その逆も同様である。
【0067】
コンピューティングシステム1002は、周辺ポート1024を介した、オンボードカメラの静止画像、ビデオストリーム等を記録するオペレーションを可能にするビデオインターフェース1028をさらに含んでもよい。コンピューティングシステム1002は、追加の特徴又は機能を有してもよい。例えば、コンピューティングシステム1002は、磁気ディスク、光ディスク、又はテープなどの追加のデータストレージ装置(取外し可能な装置及び/又は取外し不可能な装置)をさらに備えてもよい。このような追加のストレージは、
図10Bにおいて不揮発性記憶領域1042により示されている。音声インターフェース1030は、ユーザに可聴信号を提供し、ユーザから可聴信号を受信するために使用される。例えば、音声インターフェース1030は、音声トランスデューサ1012に結合されることに加えて、例えば電話会談を容易にし、及び/又はビデオを記録しながら音声を受信するなどのために、マイクロフォンに結合されることで、可聴入力を受信してもよい。本開示の実施形態によれば、マイクロフォンは、以下で説明するように、通知の制御を容易にするためにオーディオセンサとして機能することもできる。コンピューティングシステム1002は、オンボードカメラ1016のオペレーションにより静止画像、ビデオストリーム等を記録することを可能にするビデオインターフェース1028をさらに含んでもよい。コンピューティングシステム1002の構成要素は、電源1044に直接結合されることで、起動されたときに、バッテリ電力を節約するためにプロセッサ1020及び/又は1018並びに他の構成要素が切断されていても、通知機構によって指定された継続時間の間、オンにされた状態を維持することができる。LED 1034は、ユーザが装置の電源オン状態を示す行動を行うまで、無期限に点灯し続けるようにプログラムされてもよい。
【0068】
以上で説明されたように、コンピューティングシステム1002により生成又は取得され、システムを介して記憶されたデータ/情報は、コンピューティングシステム1002上にローカルに記憶されてもよいし、あるいは、データは、無線インターフェース層1032を介して、又はコンピューティングシステム1002とコンピューティングシステム1002に関連付けられている別のコンピューティングシステム(例えば、インターネットなどの、分散型コンピューティングネットワーク内のサーバコンピュータ)との間の有線接続を介して、装置によりアクセス可能な任意の数の記憶媒体に記憶されてもよい。このようなデータ/情報は、コンピューティングシステム1002を介して、無線インターフェース層1032を介して、又は分散型コンピューティングネットワークを介してアクセスしてもよい。同様に、このようなデータ/情報は、電子メール及び共同データ/情報共有システムを含む公知のデータ/情報送信及び記憶手段に従って、記憶及び使用のためにコンピューティングシステム間で容易に送信されてもよい。
【0069】
図11は、上記で説明されたような、汎用コンピューティング装置1102、タブレットコンピューティング装置1104、又はモバイルコンピューティング装置1106のような遠隔ソースからコンピューティングシステムにおいて受信されたデータを処理するための、システムのアーキテクチャの一態様を示す。例において、コンピューティング装置1102は、グラフィック情報などの情報が装置間で共有できるように、タブレットコンピューティング装置1104及び/又はモバイルコンピューティング装置1106をセッションに参加するように招待してもよい。サーバ装置1112におけるコンテンツは、異なる通信チャネル又は他のストレージタイプに記憶されてもよい。
【0070】
先に説明されたプログラムモジュール924又はソフトウェアアプリケーション928のうちの1つ又は複数は、上述したように、サーバ装置1112及び/又は汎用コンピューティング装置1102、タブレットコンピューティング装置1104、又はモバイルコンピューティング装置1206により使用されてもよい。例えば、サーバ装置1112は、ロードバランサ1116と、ウェブソケットサーバ1118と、コンテンツサーバ1120と、ウェブソケットストレージサーバ1124とを含んでもよい。いくつかの例において、サーバ装置1112は、コンテンツサービスプラットフォーム112の1つ又は複数の機能を実行してもよい。サーバ装置1112により提供される各機能は、ユニークなサービスクラスタ内で仮想化されてもよい。各サービスクラスタは、コンテンツサービスプラットフォーム112の異なる機能を実行してもよい。サービスクラスタは、例示的なクラウドネットワーク内の仮想マシン上でホストされてもよい。例示的なクラウドネットワークは、さまざまな仮想マシンが物理的にデプロイされた複数の地理的に異なるデプロイ地点(例えば、データセンター)を含んでもよい。サーバ装置1112は複数の構成要素928を示すが、サーバ装置1112は単一のアプリケーション又は構成要素を含んでもよい。したがって、コンテンツサービスプラットフォーム112の機能のうちの少なくともいくつかを一緒に実行する複数の分散サーバ装置1112が存在してもよい。
【0071】
例において、ロードバランサ1116は、ロードバランサ206と同一であってもよいし、又は似ていてもよい。いくつかの例において、ウェブソケットサーバ1118は、ウェブソケットサーバクラスタ208のウェブソケットサーバと同一又は類似である。同様に、コンテンツサーバ1120は、コンテンツサーバクラスタ210のコンテンツサーバと同一又は類似である。ウェブソケットストレージサーバ1124は、ウェブソケットストレージ218についてのサーバと同一であってもよいし、又は似ていてもよい。コンピューティング装置のこれらの例のいずれかは、ストア1114からコンテンツを取得するか、又はストア1114にコンテンツを記憶してもよい。例において、1122はメッセージ情報を記憶してもよい。
【0072】
サーバ装置1112は、ネットワーク1110を介して、汎用コンピューティング装置1102、タブレットコンピューティング装置1104、及び/又はモバイルコンピューティング装置1106(例えば、スマートフォン)などのクライアントコンピューティング装置にデータを提供し、クライアントコンピューティング装置からデータを提供されてもよい。一例として、上述したコンピュータシステムは、汎用コンピューティング装置1102、タブレットコンピューティング装置1104、及び/又はアプリケーション1108(例えば、スマートフォン)内で実現されてもよい。グラフィック作成システム(graphic-originating system)における前処理又は受信コンピューティングシステムにおける後処理に使用できるグラフィカルデータを受信することに加えて、コンピューティング装置のこれらの例のいずれも、ストア1114からコンテンツを取得してもよい。
【0073】
さらに、本明細書に記載された態様及び機能は、分散型システム(例えば、クラウドベースのコンピューティングシステム)上で動作することができるが、ここでは、アプリケーション機能、メモリ、データ記憶及びデータ取り戻し、ならびに様々な処理機能は、分散型コンピューティングネットワーク(例えば、インターネット又はイントラネット)上で互いに遠隔的に動作してもよい。様々なタイプのユーザインターフェース及び情報は、オンボードコンピューティング装置ディスプレイを介して、又は1つ又は複数のコンピューティング装置に関連付けられている遠隔ディスプレイユニットを介して表示されてもよい。例えば、様々なタイプのユーザインターフェースと情報を投影した壁面にこれらの様々なタイプのユーザインターフェースと情報を表示してやり取りしてもよい。本発明の例を実施するために利用できる複数のコンピューティングシステムとのやり取りは、キーストローク入力、タッチスクリーン入力、音声又は他のオーディオ入力、ジェスチャ入力などを含む。ジェスチャ入力の場合、関連付けられているコンピューティング装置は、コンピューティング装置の機能を制御するためにユーザのジェスチャをキャプチャ及び解釈するための検出(例えば、カメラ)機能を備える。
【0074】
例えば、本開示の態様は、本開示の態様にかかる方法、システム、及びコンピュータプログラム製品のブロック図及び/又は操作図を参照して以上に説明されている。ブロック内に記された機能/動作は、任意のフローチャートに示された順序とは異なる順序で発生してもよい。例えば、関連する機能/動作によっては、連続して示される2つのブロックは実際には実質的に同時に実行されてもよいし、又はこれらのブロックは時には逆の順序で実行されてもよい。
【0075】
本開示は、少なくとも以下の部分で提供される例に従って、少なくとも2つのクライアント間でメッセージデータを同期させるためのシステム及び方法に関する。
【0076】
(Al) 一態様において、いくつかの例は、少なくとも2つのクライアント間でメッセージデータを同期させる方法を含む。前記方法は、第1のクライアントから、第1のクライアント識別子を含む共有セッションを開始する要求を受信することと、受信した要求に基づいて、前記第1のクライアント識別子に関連付けられている前記第1のクライアントにセッション識別子を提供することと、前記第1のクライアント識別子を前記セッション識別子に関連付けることと、前記セッション識別子に関連付けられるように第2のクライアントから要求を受信することと、前記第2のクライアント識別子を前記セッション識別子に関連付けることと、前記第1のクライアントからメッセージデータを受信することと、前記メッセージデータを前記セッション識別子に関連付けられているキューに追加することと、前記メッセージデータを前記セッション識別子とともにデータベースに追加することと、前記セッション識別子に基づいて、前記メッセージデータを前記キューから前記第2のクライアントに提供することと、を含む。
【0077】
(A2) A1のいくつかの例において、前記方法は、前記第1のクライアントからの前記メッセージデータを、ロードバランサにおいて受信することと、前記ロードバランサにおいて、リソースの可用性に基づいてウェブソケットサーバのインスタンスを決定することと、前記メッセージデータを前記ウェブソケットサーバの決定されたインスタンスに送信することと、前記ウェブソケットサーバから、前記キューを含むウェブソケットストレージに前記メッセージデータを提供することと、をさらに含む。
【0078】
(A3) A1~A2のいくつかの例において、前記方法は、前記ウェブソケットストレージからの前記メッセージデータを、前記ロードバランサにおいて受信することと、前記メッセージデータを、前記ウェブソケットストレージのキューから前記第2のクライアントに提供することと、をさらに含む。
【0079】
(A4) A1~A3のいくつかの例において、前記方法は、前記第1のクライアントからの前記メッセージデータを、ロードバランサにおいて受信することと、前記ロードバランサにおいて、リソースの可用性に基づいてウェブソケットサーバのインスタンスを決定することと、前記メッセージデータを前記ウェブソケットサーバの決定されたインスタンスに送信することと、前記ウェブソケットサーバから、前記メッセージデータを、前記メッセージデータを前記データベースに記憶するコンテンツサービスクラスタに提供することと、をさらに含む。
【0080】
(A5) A1~A4のいくつかの例において、前記メッセージデータはオブジェクト情報とセッション情報とを含む。前記情報は、前記データベースの、前記セッション識別子とは異なる場所に記憶されている。
【0081】
(A6) A1~A5のいくつかの例において、前記オブジェクト情報は、拡張現実セッションのために前記第1のクライアントに関連付けられているディスプレイにおいて表示されるグラフィックオブジェクトを含む。
【0082】
(A7) A1~A6のいくつかの例において、前記メッセージデータと前記セッション識別子とは、インメモリ(in-memory)データベースに記憶されている。
【0083】
さらに別の態様において、いくつかの例はコンピューティングシステムを含む。該コンピューティングシステムは1つ又は複数のプロセッサと、該1つ又は複数のプロセッサに結合されたメモリとを備える。該メモリは、該1つ又は複数のプロセッサにより実行されるとき、該1つ又は複数のプロセッサに、本明細書に説明された方法のうちのいずれかの方法(例えば、上記A1~A7)を実行させる1つ又は複数の命令を記憶している。
【0084】
さらに別の態様において、いくつかの例は、ストレージ装置の1つ又は複数のプロセッサにより実行されるための1つ又は複数のプログラムを記憶している非一時的なコンピュータ可読記憶媒体を含む。該1つ又は複数のプログラムは本明細書で説明された方法(例えば、上記A1~A7)のうちのいずれかの方法を実行するための命令を含む。
【0085】
本願で提供された1つ又は複数の態様の説明及び例示は、特許請求される本開示の範囲をいかなる態様で制限又は限定することも意図しない。本明細書で説明された態様、例及び詳細は、所有権を伝えるのに十分であり、かつ、他の者が特許請求される本開示の最善の形態を形成及び使用することを可能にするのに十分であるとみなされる。特許請求される本開示は、本明細書で説明された態様、例、又は詳細に限定されるものと解釈すべきではない。様々な特徴(構造的特徴及び方法的特徴)は、組み合わせて図示又は説明されるか又は個別に図示又は説明されるかにかかわらず、特定の特徴セットを有する例を形成するためには、選択的に含む又は省略することが意図されている。本願の説明及び例示を提供することにより、当業者は、特許請求される開示のより広い範囲から逸脱しない、本願で実現された一般的な発明構想のより広い態様の要旨に含まれる変更、修正及び代替態様を想定してもよい。
【手続補正書】
【提出日】2023-12-08
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
少なくとも2つのクライアント間でメッセージデータを同期させる方法であって、
第1のクライアントから、第1のクライアント識別子を含む、共有セッションを開始する要求を受信することと、
受信した前記要求に基づいて、前記第1のクライアント識別子に関連付けられている前記第1のクライアントにセッション識別子を提供することと、
前記第1のクライアント識別子を前記セッション識別子に関連付けることと、
前記セッション識別子に関連付けられるように第2のクライアントから要求を受信することと、
前記第2のクライアント識別子を前記セッション識別子に関連付けることと、
前記第1のクライアントからメッセージデータを受信することと、
前記メッセージデータを前記セッション識別子に関連付けられているキューに追加することと、
前記メッセージデータを前記セッション識別子とともにデータベースに追加することと、
前記セッション識別子に基づいて、前記メッセージデータを前記キューから前記第2のクライアントに提供することと、
を含む、方法。
【請求項2】
前記第1のクライアントからの前記メッセージデータを、ロードバランサにおいて受信することと、
前記ロードバランサにおいて、リソースの可用性に基づいてウェブソケットサーバのインスタンスを決定することと、
前記メッセージデータを前記ウェブソケットサーバの決定された前記インスタンスに送信することと、
前記ウェブソケットサーバから、前記キューを含むウェブソケットストレージに前記メッセージデータを提供することと、
をさらに含む、請求項1に記載の方法。
【請求項3】
前記ウェブソケットストレージからの前記メッセージデータを、前記ロードバランサにおいて受信することと、
前記メッセージデータを、前記ウェブソケットストレージのキューから前記第2のクライアントに提供することと、
をさらに含む、請求項2に記載の方法。
【請求項4】
前記第1のクライアントからの前記メッセージデータを、ロードバランサにおいて受信することと、
前記ロードバランサにおいて、リソースの可用性に基づいてウェブソケットサーバのインスタンスを決定することと、
前記メッセージデータを前記ウェブソケットサーバの決定された前記インスタンスに送信することと、
前記ウェブソケットサーバから、前記メッセージデータを、前記メッセージデータを前記データベースに記憶するコンテンツサービスクラスタに提供することと、
をさらに含む、請求項1に記載の方法。
【請求項5】
前記メッセージデータはオブジェクト情報とセッション情報とを含み、前記オブジェクト情報は、前記データベースの、前記セッション識別子とは異なる場所に記憶されている
請求項1に記載の方法。
【請求項6】
前記オブジェクト情報は、拡張現実セッションのために前記第1のクライアントに関連付けられたディスプレイにおいて表示されるグラフィックオブジェクトを含む
請求項5に記載の方法。
【請求項7】
前記メッセージデータと前記セッション識別子とは、インメモリデータベースに記憶されている
請求項1に記載の方法。
【請求項8】
プロセッサと、
前記プロセッサにより実行されるとき、コンテンツサービスプラットフォームを、
第1のクライアントから、第1のクライアント識別子を含む、共有セッションを開始する要求を受信し、
受信した前記要求に基づいて、前記第1のクライアント識別子に関連付けられている前記第1のクライアントにセッション識別子を提供し、
前記第1のクライアント識別子を前記セッション識別子に関連付け、
前記セッション識別子に関連付けられるように第2のクライアントから要求を受信し、
前記第2のクライアント識別子を前記セッション識別子に関連付け、
前記第1のクライアントからメッセージデータを受信し、
前記メッセージデータを前記セッション識別子に関連付けられているキューに追加し、
前記メッセージデータを前記セッション識別子とともにデータベースに追加し、
前記セッション識別子に基づいて、前記メッセージデータを前記キューから前記第2のクライアントに提供する
ように設定する命令を記憶しているメモリと、
を備える、コンテンツサービスプラットフォーム。
【請求項9】
前記命令はさらに、前記コンテンツサービスプラットフォーム(112)を、
前記第1のクライアントからの前記メッセージデータを、ロードバランサにおいて受信し、
前記ロードバランサにおいて、リソースの可用性に基づいてウェブソケットサーバのインスタンスを決定し、
前記メッセージデータを前記ウェブソケットサーバの決定された前記インスタンスに送信し、
前記ウェブソケットサーバから、前記キューを含むウェブソケットストレージに前記メッセージデータを提供する
ように設定する、請求項8に記載のコンテンツサービスプラットフォーム。
【請求項10】
前記命令はさらに、前記コンテンツサービスプラットフォームを、
前記ウェブソケットストレージからの前記メッセージデータを、前記ロードバランサにおいて受信し、
前記メッセージデータを、前記ウェブソケットストレージのキューから前記第2のクライアントに提供する
ように設定する、請求項9に記載のコンテンツサービスプラットフォーム。
【請求項11】
前記命令はさらに、前記コンテンツサービスプラットフォームを、
前記第1のクライアントからの前記メッセージデータを、ロードバランサにおいて受信し、
前記ロードバランサにおいて、リソースの可用性に基づいてウェブソケットサーバのインスタンスを決定し、
前記メッセージデータを前記ウェブソケットサーバの決定された前記インスタンスに送信し、
前記ウェブソケットサーバから、前記メッセージデータを、前記メッセージデータを前記データベースに記憶するコンテンツサービスクラスタに提供する
ように設定する、請求項8に記載のコンテンツサービスプラットフォーム。
【請求項12】
前記メッセージデータはオブジェクト情報とセッション情報とを含み、前記オブジェクト情報は、前記データベースの、前記セッション識別子とは異なる場所に記憶されている
請求項11に記載のコンテンツサービスプラットフォーム。
【請求項13】
前記オブジェクト情報は、拡張現実セッションのために前記第1のクライアントに関連付けられたディスプレイにおいて表示されるグラフィックオブジェクトを含む
請求項12に記載のコンテンツサービスプラットフォーム。
【請求項14】
前記メッセージデータと前記セッション識別子とは、インメモリデータベースに記憶されている
請求項8に記載のコンテンツサービスプラットフォーム。
【請求項15】
コンピュータにより実行されるとき、前記コンピュータに、
第1のクライアントから、第1のクライアント識別子を含む、共有セッションを開始する要求を受信することと、
受信した前記要求に基づいて、前記第1のクライアント識別子に関連付けられている前記第1のクライアントにセッション識別子を提供することと、
前記第1のクライアント識別子を前記セッション識別子に関連付けることと、
前記セッション識別子に関連付けられるように第2のクライアントから要求を受信することと、
前記第2のクライアント識別子を前記セッション識別子に関連付けることと、
前記第1のクライアントからメッセージデータを受信することと、
前記メッセージデータを前記セッション識別子に関連付けられているキューに追加することと、
前記メッセージデータを前記セッション識別子とともにデータベースに追加することと、
前記セッション識別子に基づいて、前記メッセージデータを前記キューから前記第2のクライアントに提供することと、
を実行させる命令を含む、非一時的なコンピュータ可読記憶媒体。
【請求項16】
前記命令はさらに、前記コンピュータを、
前記第1のクライアントからの前記メッセージデータを、ロードバランサにおいて受信し、
前記ロードバランサにおいて、リソースの可用性に基づいてウェブソケットサーバのインスタンスを決定し、
前記メッセージデータを前記ウェブソケットサーバの決定された前記インスタンスに送信し、
前記ウェブソケットサーバから、前記キューを含むウェブソケットストレージに前記メッセージデータを提供する
ように設定する、請求項15に記載のコンピュータ可読記憶媒体。
【請求項17】
前記命令はさらに、前記コンピュータを、
前記ウェブソケットストレージからの前記メッセージデータを、前記ロードバランサにおいて受信し、
前記メッセージデータを、前記ウェブソケットストレージのキューから前記第2のクライアントに提供する
ように設定する、請求項16に記載のコンピュータ可読記憶媒体。
【請求項18】
前記命令はさらに、前記コンピュータを、
前記第1のクライアントからの前記メッセージデータを、ロードバランサにおいて受信し、
前記ロードバランサにおいて、リソースの可用性に基づいてウェブソケットサーバのインスタンスを決定し、
前記メッセージデータを前記ウェブソケットサーバの決定された前記インスタンスに送信し、
前記ウェブソケットサーバから、前記メッセージデータを、前記メッセージデータを前記データベースに記憶するコンテンツサービスクラスタに提供する
ように設定する、請求項15に記載のコンピュータ可読記憶媒体。
【請求項19】
前記メッセージデータはオブジェクト情報とセッション情報とを含み、前記オブジェクト情報は、前記データベースの、前記セッション識別子とは異なる場所に記憶されている
請求項18に記載のコンピュータ可読記憶媒体。
【請求項20】
前記メッセージデータと前記セッション識別子とは、インメモリデータベースに記憶されている
請求項15に記載のコンピュータ可読記憶媒体。
【請求項21】
コンピュータにより実行されるとき、前記コンピュータに、
第1のクライアントから、第1のクライアント識別子を含む、共有セッションを開始する要求を受信することと、
受信した前記要求に基づいて、前記第1のクライアント識別子に関連付けられている前記第1のクライアントにセッション識別子を提供することと、
前記第1のクライアント識別子を前記セッション識別子に関連付けることと、
前記セッション識別子に関連付けられるように第2のクライアントから要求を受信することと、
前記第2のクライアント識別子を前記セッション識別子に関連付けることと、
前記第1のクライアントからメッセージデータを受信することと、
前記メッセージデータを前記セッション識別子に関連付けられているキューに追加することと、
前記メッセージデータを前記セッション識別子とともにデータベースに追加することと、
前記セッション識別子に基づいて、前記メッセージデータを前記キューから前記第2のクライアントに提供することと、
を実行させる、コンピュータプログラム。
【国際調査報告】