Sharing-based Augmented Reality Content Service System

The content services system addresses the challenge of real-time augmented reality content sharing by using WebSocket connections and a microservices model to achieve low-latency, scalable, and synchronized content delivery across multiple clients.

JP7810725B2Active Publication Date: 2026-02-03LEMON CO LTD
View PDF 10 Cites 0 Cited by

Patent Information

Application Number
JP2023575806
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-08-04
Filing Date
2022-07-19
Publication Date
2026-02-03
Estimated Expiration
2042-07-19

AI Technical Summary

Technical Problem

Current technologies do not provide a scalable solution for sharing augmented reality content in real time with low end-to-end latency, as they rely on client-controlled HTTP communication that is unsuitable for low-latency applications and less scalable.

Method used

A content services system using WebSocket connections and a microservices model with container technology to facilitate real-time data transmission between clients, enabling low-latency augmented reality content sharing by synchronizing message data through a content services platform with a database and queue management system.

Benefits of technology

Enables real-time, scalable, and synchronized augmented reality content sharing across multiple clients with low end-to-end latency, maintaining performance metrics during traffic fluctuations.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007810725000001
    Figure 0007810725000001
  • Figure 0007810725000002
    Figure 0007810725000002
  • Figure 0007810725000003
    Figure 0007810725000003
Patent Text Reader

Abstract

A method and system are for a content services platform, the content services platform including a processor and, when executed by the processor, configuring the content services platform to perform the method. The method may include receiving a request from a first client to initiate a sharing session including a first client identifier. Based on the received request, a session identifier may be provided to the first client associated with the first client identifier. A request may be received from a second client to be associated with the session identifier. Thus, upon receiving message data from the first client, the message data may be added to a queue associated with the session identifier, such that the message data may be provided from the queue to the second client based on the session identifier.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority to U.S. Application No. 17 / 394,390 (title: Augmented reality content service system based on automatic and efficient sharing), filed on August 4, 2021, the entire contents of which are incorporated herein by reference in their entirety. [Background technology]

[0002] The web and other applications have largely been built using the request / response paradigm associated with the Hypertext Transfer Protocol (HTTP). For example, a user loads a web page, and information is further processed and / or displayed until the user clicks to the next page. While AJAX was introduced to make the web feel more dynamic, HTTP communication tends to be client-controlled, requiring user interaction or periodic polling to load new data from the server. Techniques that allow servers to instantly send data to clients the moment new data becomes available involve the overhead of HTTP, making such techniques unsuitable for low-latency applications and less scalable. In other words, current technology does not provide a scalable solution for sharing augmented reality content instantly in real time.

[0003] It is with respect to these and other general considerations that the aspects disclosed herein are described. Also, while relatively specific problems are discussed, it should be understood that these examples should not be limited to solving the specific problems identified in the background or elsewhere in this disclosure. Summary of the Invention [Means for solving the problem]

[0004] According to examples of the present disclosure, a content services system supporting real-time content sharing exhibiting low end-to-end latency is described. The content services system can facilitate transmitting augmented reality content from a first client to a second client, where the measured end-to-end latency from the first client to the second client can be hundreds of milliseconds. Furthermore, the content services system described herein may be scalable based on changes in customer traffic such that performance metrics (e.g., message transmission rate, latency) remain the same or similar during traffic increases or decreases. Thus, the content services system can support augmented reality applications involving multiple clients located in different geographic locations.

[0005] In accordance with at least one example of the present disclosure, a method for synchronizing message data between at least two clients is described. The method may include receiving a request from a first client to initiate a shared session, the request including a first client identifier, providing a session identifier to the first client associated with the first client identifier based on the received request, associating the first client identifier with the session identifier, receiving a request from a second client to be associated with the session identifier, associating the second client identifier with the session identifier, receiving message data from the first client, adding the message data to a queue associated with the session identifier, adding the message data with the session identifier to a database, and providing the message data from the queue to the second client based on the session identifier.

[0006] In accordance with at least one example of the present disclosure, a content services platform is described. The content services platform may include a processor and a memory storing instructions that, when executed by the processor, configure the content services platform to: receive a request to initiate a sharing session from a first client, the request including a first client identifier; provide a session identifier to the first client associated with the first client identifier based on the received request; associate the first client identifier with the session identifier; receive a request from a second client to be associated with the session identifier; associate the second client identifier with the session identifier; receive message data from the first client; add the message data to a queue associated with the session identifier; add the message data with the session identifier to a database; and provide the message data from the queue to the second client based on the session identifier.

[0007] In accordance with at least one example of the present disclosure, a non-transitory computer-readable storage medium is described, the computer-readable storage medium including instructions that, when executed by a computer, cause the computer to: receive a request from a first client to initiate a sharing session, the request including a first client identifier; provide a session identifier to the first client associated with the first client identifier based on the received request; associate the first client identifier with the session identifier; receive a request from a second client to be associated with the session identifier; associate the second client identifier with the session identifier; receive message data from the first client; add the message data to a queue associated with the session identifier; add the message data with the session identifier to a database; and provide the message data from the queue to the second client based on the session identifier.

[0008] One or more computer systems can be configured to perform particular operations or said actions by installing on the systems software, firmware, hardware, or a combination thereof that, when operated, causes the systems to perform the actions. One or more computer programs can be configured to perform particular operations or said actions by containing instructions that, when executed by a data processing device, cause the device to perform the actions.

[0009] This Summary is provided to introduce in a simplified form a selection of concepts that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to limit the scope of the claimed subject matter. [Brief explanation of the drawings]

[0010] To easily identify the discussion of any particular element or operation, the most significant digit or digits in a reference number refer to the figure number in which that element first appears.

[0011] [Figure 1] FIG. 1 illustrates a content services system that provides an architecture for supporting a content services platform, according to an example of the present disclosure.

[0012] [Figure 2] FIG. 2 illustrates details associated with a content services system according to an example of the present disclosure.

[0013] [Figure 3] FIG. 10 illustrates additional details for storing message data using WebSocket storage according to an example of the present disclosure.

[0014] [Figure 4] FIG. 1 illustrates a detailed message communication diagram for distributed communication between a WebSocket server deployed in a distributed system and different clients communicating with different WebSocket server instances, according to an example of the present disclosure.

[0015] [Figure 5] FIG. 2 illustrates an exemplary data structure according to an example of the present disclosure.

[0016] [Figure 6] FIG. 2 illustrates a method for receiving and storing message data at a storage location associated with a content services cluster according to an example of the present disclosure.

[0017] [Figure 7] FIG. 1 illustrates a method for receiving and storing message data in a queue associated with WebSocket storage according to an example of the present disclosure.

[0018] [Figure 8] FIG. 1 illustrates a simplified method for retrieving data in a queue associated with WebSocket storage according to an example of the present disclosure.

[0019] [Figure 9] FIG. 1 is a block diagram illustrating the physical components (e.g., hardware) of a computing system that can be used to implement aspects of the present disclosure.

[0020] [Figure 10A] FIG. 1 illustrates details of a computing system that can be used to implement examples of the present disclosure.

[0021] [Figure 10B] FIG. 1 illustrates details of a computing system that can be used to implement examples of the present disclosure.

[0022] [Figure 11] FIG. 1 illustrates an architecture of a system for processing received data in a computing system according to an example of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

[0023] In the following detailed description, reference is made to the accompanying drawings, which form a part hereof, and in which is shown by way of illustration specific aspects or examples. These aspects may be combined, other aspects may be utilized, and structural changes may be made without departing from the disclosure. These aspects may be embodied as methods, systems, or apparatuses. As such, these aspects may take the form of a hardware implementation, an entirely software implementation, or an implementation combining software and hardware aspects. Therefore, the following detailed description is not to be taken in a limiting sense, and the scope of the disclosure is limited only by the appended claims and their equivalents.

[0024] FIG. 1 illustrates a content services system 100 that provides an architecture for supporting a content services platform 112 according to an example of the present disclosure. The content services system 100 may include a computing device 102, a computing device 106, a communications network 110, and a content services platform 112. As used herein, the term “computing device” may refer to any component (or collection of components) capable of establishing a connection with a communications network, such as communications network 110. In examples, a computing device may be a smartphone, a tablet computer, a smart wearable device, a smart home device, and / or a general-purpose computer. Computing devices, such as computing device 102 and / or computing device 106, may include one or more applications (e.g., application 104 and / or application 108, respectively) that facilitate sharing of content, such as augmented reality content. Accordingly, content acquired or otherwise created at computing device 102 may be synchronized or otherwise provided to computing device 106 via communications network 110 and content services platform 112. Such content may be provided in real time or essentially real time. The content services platform 112 may be accessed by computing devices via carrier-deployed cellular networks, WiFi networks, RANs, other wireless networks, wired Internet Protocol (IP) networks, combinations thereof, etc. The communications network 110 may include one or more components configured to provide wireless or wired network access, including, but not limited to, cellular communications networks, Wi-Fi access points, etc.While computing device 102 and computing device 106 are shown in FIG. 1, it should be understood that content services system 100 may include additional computing devices capable of receiving content and interacting with content services platform 112.

[0025] According to an example of the present disclosure, the content services platform 112 can use container technology to virtualize the telecommunications system architecture, e.g., virtualize one or more servers and / or services provided as part of the content services system 100. Virtualization using container technology enables the content services platform 112 to adopt a microservices model in which service clusters are considered building blocks of the system architecture. For example, each function provided by the content services platform 112 may be virtualized within a unique service cluster. Each service cluster may perform a different function within the content services platform 112. The service clusters may be hosted on virtual machines within an exemplary cloud network. The exemplary cloud network may include multiple geographically distinct deployment locations (e.g., data centers) where various virtual machines are physically deployed. Decomposing the system into a set of services allows each service (e.g., each function provided by the content services platform 112) to be deployed and managed independently. This can improve the fault tolerance of the system by localizing failures to individual services.

[0026] In some examples, the communication network 110 incorporates distributed databases, clustering techniques, data analysis tools, and messaging middleware to provide a robust and scalable platform. The content services platform 112 may use fully virtualized components in a layered manner, allowing the content services platform 112 to be integrated into a variety of public and private cloud environments.

[0027] According to an example of the present disclosure, content services platform 112 may enable a shared augmented reality session between at least computing device 102 and computing device 106. Accordingly, application 104 on computing device 102 may initiate a WebSocket connection with content services platform 112 by creating a WebSocket request that is sent to content services platform 112. A WebSocket may be a persistent connection between a client (e.g., computing device 102) and a server (e.g., a server that is part of content services platform 112). Typically, a WebSocket provides a two-way, full-duplex communication channel that operates over HTTP over a TCP / IP socket connection. WebSockets thus facilitate the transmission of messages between devices (e.g., computing device 102 and / or computing device 106) and servers (e.g., servers within content services platform 112) and allow interactions between device applications (e.g., application 104 and / or application 108) and web servers to have lower overhead than half-duplex alternatives such as HTTP polling, thereby facilitating real-time data transmission from devices (e.g., computing device 102 and / or computing device 106) and to servers (e.g., servers that are part of content services platform 112). In some examples, data transmitted from application 104 on computing device 102 may be received at content services platform 112 and forwarded to application 108 on computing device 106, thereby enabling real-time communication between computing device 102 and computing device 106.In an example, data communicated between computing device 102 and computing device 106 may be instant message-type text messages, and / or graphics, text, augmented reality content, and / or other objects rendered on the display of one of computing device 102 and / or computing device 106.

[0028] The content services platform 112 may receive a WebSocket request provided by the computing device 102 and generate a session identifier as part of the WebSocket session setup. The session identifier may be provided to the application 104 of the computing device 102. In an example, messages between the computing device 102 and the content services platform 112 may be associated with the session identifier. Accordingly, the content services platform 112 may maintain or otherwise manage each message. Such messages may be stored in persistent data storage. In an example, the computing device 102 may invite another computing device (e.g., the computing device 106) to join the session. The other computing device, e.g., the computing device 106, may join the session in response to the invitation (e.g., on behalf of the computing device 102, the content services platform 112, or another device that provided the session identifier). The content services platform 112 may provide to the computing device 106 all messages associated with the session identifier that were provided to, generated by, or otherwise exchanged with the content services platform 112 before the computing device 106 joined the session. Thus, the message provided to the newly joining computing device 106 may be the same message previously provided to computing device 102 and / or other computing devices that are part of the same session. Alternatively or additionally, a computing device that is unexpectedly disconnected may reconnect and restore all messages for the same session from persistent storage. That is, the session identifier may enable content synchronization between computing devices in the same session.

[0029] Alternatively or additionally, when a communication session ends (e.g., when none of the computing devices are communicating with the content services platform 112), the content services platform 112 may perform a session teardown and remove or otherwise disassociate such messages from the session identifier. Thus, such messages may be removed, erased, or otherwise deleted from the content services platform 112. In an example, the computing device or the content services platform 112 may initiate the teardown of the session.

[0030] 2 is a diagram illustrating details associated with a content services system 200 according to an example of the present disclosure. The content services system 200 may be the same as or similar to the content services system 100 described above. In an example, the content services platform 202 may be the same as or similar to the content services platform 112 described above. The content services platform 202 may include a load balancer 206, a WebSocket server cluster 208, a content services cluster 210, and a database 212. The database 212 may include object storage 214 and object metadata storage 216. The content services platform 202 may also include WebSocket storage 218. Each of the load balancer 206, the WebSocket server cluster 208, the content services cluster 210, the database 212, and the WebSocket storage 218 may be hosted on a virtual machine within an exemplary distributed cloud network. A WebSocket client 204, e.g., an application 104 (FIG. 1) of a computing device 102 (FIG. 1), may issue a request to a load balancer 206 of the content services platform 202. The request may be to send message data to another application 108 (FIG. 1) and may include a session creation request or other data (e.g., graph data) and an existing session identifier. The load balancer 206 may be configured to evenly distribute client traffic to a WebSocket server cluster 208, where the WebSocket server cluster 208 may include multiple WebSocket servers. Thus, based on resource consumption, the load balancer 206 may determine or otherwise identify at least one WebSocket server to hand off message data received from the WebSocket client 204 at the load balancer 206.

[0031] The WebSocket server cluster 208 is configured to maintain WebSocket connections with the WebSocket clients 204 and to send and receive message data to and from the WebSocket clients 204. In an example, a WebSocket server from the WebSocket server cluster 208 may send message data received from the WebSocket clients 204 to WebSocket storage 218, where the message data is added to queue 220 for later retrieval by another client and then sent to the other client. Additionally, to enable asynchronous recovery of the message data, the WebSocket server may back up or otherwise maintain a copy of the message data using the content services cluster 210. The copy of the message data created in the content services cluster 210 may be used to restore the message data of a user's application if the application is disconnected or if the application prematurely joins an ongoing session. That is, the content services cluster 210 may be responsible for storing the message data and / or servicing one or more requests to retrieve data from the WebSocket clients 204. In an example, the content services cluster 210 may store the message data in a database 212. Here, the object portion of the message data may be stored as object storage 214 in database 212, and the metadata portion of the message data may be stored as object metadata storage 216 in database 212. In an example, content services cluster 210 may retrieve message data from database 212. That is, content services cluster 210 may retrieve the object portion of the message data stored in object storage 214 and the metadata portion of the message data stored in object metadata storage 216. In an example, content services cluster 210 may retrieve message data from database 212.Here, the object portion of the message data may be retrieved from object storage 214 and the metadata portion of the message data may be retrieved from object metadata storage 216 within database 212 .

[0032] 3 illustrates additional details for storing message data using WebSocket storage according to an example of the present disclosure. For example, computing device 302, which may be the same as or similar to computing device 102, may send a message destined for computing device 314. Computing device 314 may be the same as or similar to computing device 106. The message may be received at WebSocket server instance 306a of WebSocket server cluster 306 within content services platform 304. WebSocket server instance 306a of WebSocket server cluster 306 may provide the message data to WebSocket storage 308. WebSocket storage 308 may include database load balancer 310 and database server 312. Database load balancer 310 may identify and / or select database servers (312a-312c). The selected database server (312a-312c) may add the message to a session management queue (e.g., 316a) via a database operation, such as a push operation. Substantially simultaneously, WebSocket server instance 306b may initiate a call operation to fetch any available messages from session management queue 316a. Different sessions may have separate session management queues. For example, session management queue 316b may be for a different session and may be accessed via database server 312a and / or database server 312b. When establishing another, different session, another session management queue may be created and communicated with one or more of database servers 312a-c. Because session management queues are created in response to requests for new sessions and removed when the session is no longer needed, for example, database server 312c may communicate with a new session management queue as needed. Thus, session management queues (e.g., session management queues 316a-b) are created and removed as needed.Additionally, database servers 312a-c may manage one or more session management queues (eg, 316a-b) depending on load and availability.

[0033] In some examples, session management queue 316a and / or session management queue 316b may be stored in memory, such as random access memory, volatile memory, or other memory with low access times. Clients (e.g., computing device 102 and / or computing device 106) within the same session may be connected to different WebSocket server instances (e.g., WebSocket server instance 306a and / or WebSocket server instance 306b) and communicate in a decentralized manner without needing to know or identify which server instance they are connected to. Of course, while database server 312 is shown in FIG. 3, more or fewer database servers 312 are contemplated. In examples, computing device 302 may send data to computing device 314 via content services platform 304. Additionally, computing device 314 may send data to computing device 302 via content services platform 304. Thus, both computing device 302 and computing device 314 may display the same or synchronized augmented reality content on their respective devices (e.g., by including the same augmented reality content in the video and / or image data).

[0034] In some examples, the session management queue 316a may be divided into a session information storage and a message queue. The session information storage may include session data and a list of clients in the same session. For example, if an application 104 on a computing device 102 and an application 108 on a computing device 106 are communicating in the same session, the session information storage may include a unique client identifier that identifies the application and / or the computing device. In some examples, the message queue includes shared content data. That is, the shared content data may include augmented reality content data. Thus, the message queue may include object-specific information, text, color, coordinates, etc., that describe or otherwise provide information for recreating content, such as augmented reality content.

[0035] 4 illustrates a detailed message communication diagram for distributed communication between a WebSocket server deployed in a distributed system and different clients communicating with different WebSocket server instances, according to an example of the present disclosure. More specifically, a client (e.g., client A 402) may send a session creation request to the WebSocket server 406 at 410 to initiate a new session. Client A 402 may be the same as or similar to the computing device 102 described above. The WebSocket server 406 may correspond to the WebSocket server instance 306 described above. In an example, the new session may be for a shared augmented reality session. The WebSocket server 406 may generate a session identifier (session_id) and, at 412, add the generated session identifier to the WebSocket storage 408 and designate the session identifier as the active session identifier. In some examples, a client identifier that uniquely identifies client A 402 may be associated with the session identifier in the WebSocket storage 408. Upon adding the session identifier to WebSocket storage 408 and / or associating the client identifier of client A 402 with the session identifier, WebSocket storage 408 may provide an "ok" or acknowledgment at 414 indicating that such session has been added to WebSocket server 406. In some examples, WebSocket storage 408 may also create an initial queue or list to add or record message data sent from one or more clients. The session identifier may then be sent to client A 402 at 416.

[0036] At 418, client A 402 may invite client B 404 to join the shared session. Here, the shared session may be a shared augmented reality session that provides an interactive experience of a real-world environment, where objects present in the real world may be augmented, drawn, rendered, interactable, etc. with computer-generated perceptual information. In an example, information added to the real-world environment may be shared among users participating in the shared session. Accordingly, client A 402 may send an invitation including a session identifier to client B 404. Client B 404 may be the same as or similar to computing device 106. At 420, client A 402 may connect to the session using the WebSocket connection and the session identifier received at 416. At 422, client B 404 may connect to the session using the WebSocket connection and the session identifier received at 418. The WebSocket server 406 may then add the newly added client, Client B 404, to the WebSocket storage 408 at 424, or associate a client identifier that uniquely identifies Client B 404 with the session identifier. Once added, the WebSocket storage 408 may return an "ok" to the WebSocket server 406 at 426, indicating that Client B 404 has already joined such a session.

[0037] In an example, client A 402 may wish to send a message to client B 404 and / or other participants in the session. Accordingly, at 428, it may send message data to WebSocket server 406. WebSocket server 406 may generate a request at 430 for clients that are part of or associated with the session identifier and send the request at 430 to WebSocket storage 408. WebSocket storage 408 may return a list of clients at 432. In this example, the client identifiers of client A 402 and client B 404 may be returned as belonging to the same list. WebSocket server 406 may then determine at 434 which participant or member in the list (e.g., via the client identifier) ​​to send the message data to. For example, when client A 402 sends a message at 428, WebSocket server 406 may receive the list of clients from WebSocket storage 408 and determine that clients other than client A 402 should receive the message based on the list of names associated with the session identifier. Therefore, the WebSocket server 406 may send 434 such a message as a broadcast message from the server to clients other than client A 402 (e.g., client B 404 shown in FIG. 4 ), so that client B 404 can receive the message sent by client A 402.

[0038] FIG. 5 illustrates an exemplary data structure 502 according to an example of the present disclosure. The data structure 502 may reside in the WebSocket storage 408 (FIG. 4) and / or include a session identifier 504. The session identifier 504 is generated by the WebSocket server 406 and uniquely identifies the shared augmented reality session. In an example, the data structure 502 may include object information 506 used to create such objects in a local session associated with a client (e.g., a computing device) to create and / or synchronize content displayed on a display device. Accordingly, the data structure 502 may include the object information 506 and a timestamp 510. The object information 506 may identify a graphical object (e.g., a line, point, dot, shape, image, etc.) associated with the object created by each client (e.g., a computing device). In some examples, because an object may include multiple objects, the object information 506 may reference other objects and may include object-specific information as described above. For example, multiple lines and dots may create a shape such as a square or a circle. Object information 506 may associate other object information 506 with the object or shape. In other cases, object information 506 may include other information describing the object. For example, object information 506 may include coordinate information, color information, shape type information, and brush stroke type information.

[0039] The data structure 502 may also include a user identifier (USER_ID) 508 that identifies the user creating the object information 506. Thus, the WebSocket server may determine which participant to send message data to based on the user identifier 508. The timestamp 510 may be used to play, back up, and / or edit the object information 506. In some examples, the timestamp 510 may be offset from a starting point, such as the start of a recording, or may be associated with the current or now time and date.

[0040] Referring to FIG. 6 , a simplified method 600 for receiving and storing message data at a storage location associated with a content services cluster will be described in accordance with an example of the present disclosure. The general order of steps of method 600 is shown in FIG. 6 . Generally, method 600 begins at 602 and ends at 612. Method 600 may include more or fewer steps, or the order of steps may be configured differently than those shown in FIG. 6 . Method 600 may be implemented as a set of computer-executable instructions executed by a computer system and may be encoded or stored on a computer-readable medium. In an exemplary aspect, method 600 is performed by one or more servers in a cloud environment. For example, one or more aspects of method 600 may be performed by content services platform 112. However, it should be understood that aspects of method 600 may be performed by one or more processing devices in addition to content services platform 112. Furthermore, method 600 may be performed by gates or circuits associated with a processor, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a system on a chip (SOC), a neural processing unit, or other hardware device. Hereinafter, method 600 should be described with reference to the systems, components, modules, software, data structures, etc., described in connection with FIGS. 1-5.

[0041] Method 600 starts at 602 and proceeds to 604. At 604, message data from a client is received at a load balancer. For example, an application 104 executing on a computing device 102 may invite a computing device 106 to a session to share data with an application 108 executing on the computing device 106. Thus, the message data sent by the computing device 102 may be received at a load balancer (e.g., load balancer 206). In addition to the shared content included in the message data, a session identifier may be included in the message data so that the application 104 and / or computing device 102 and the application 108 and / or computing device 106 can communicate using the same session identifier. Method 600 may proceed to 606, where the load balancer may determine a Web Socket server from a Web Socket server cluster. In examples, the selected Web Socket server may correspond to a Web Socket server with available resources, a Web Socket server that is physically closer to one or more clients associated with the session identifier, a Web Socket server with a lower round-trip delay than other Web Socket servers, etc. In some examples, the WebSocket server cluster may be the same as or similar to WebSocket server cluster 208. The load balancer may then forward or otherwise transmit the message data received from the client to the selected WebSocket server. In examples, the determined WebSocket server may also forward or otherwise transmit the message data to a WebSocket storage, such as WebSocket storage 218, where the message data may be added to a queue for later retrieval by another client and then transmitted to another client.

[0042] Method 600 may then proceed to 608, where the determined WebSocket server may provide the received message data to the content services cluster. At 610, the message data may be stored. For example, the content services cluster may store the message data in a database. Here, the object portion of the message data may be stored in object storage (e.g., object storage 214 shown in FIG. 2), and the metadata portion of the message data may be stored as object metadata storage (e.g., object metadata storage 216 shown in FIG. 2). Once the message data is stored, method 600 may end.

[0043] To enable asynchronous recovery of message data, the WebSocket server may use the content services cluster 210 to act as a backup or otherwise maintain a copy of the message data. The copy of the message data created in the content services cluster may be used to restore the message data of a user's application if the application is disconnected or if the application prematurely joins an ongoing session. That is, the content services cluster may be responsible for storing the message data and / or servicing one or more requests made to retrieve the data from WebSocket clients. In an example, the content services cluster may store the message data in a database, where the object portion of the message data may be stored as object storage and the metadata portion of the message data may be stored as object metadata storage in the database.

[0044] Referring now to Figure 7, a simplified method 700 for receiving message data and storing it in a queue associated with WebSocket storage will be described in accordance with an example of the present disclosure. The general order of steps of method 700 is shown in Figure 7. Generally, method 700 begins at 702 and ends at 712. Method 700 may include more or fewer steps, or the order of steps may be configured differently than those shown in Figure 7.

[0045] Method 700 may be implemented as a set of computer-executable instructions executed by a computer system and encoded or stored on a computer-readable medium. In an exemplary embodiment, method 700 is performed by one or more servers in a cloud environment. For example, one or more aspects of method 700 may be performed by content services platform 112. However, it should be understood that aspects of method 700 may be performed by one or more processing devices in addition to content services platform 112. Furthermore, method 700 may be performed by gates or circuitry associated with a processor, application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), system-on-chip (SOC), neural processing unit, or other hardware device. Hereinafter, method 700 will be described with reference to the systems, components, modules, software, data structures, user interfaces, etc., described in connection with FIGS. 1-6 .

[0046] Method 700 starts at 702 and proceeds to 704. At 704, message data from a client (e.g., computing device 102) is received at a load balancer. For example, an application 104 executing on computing device 102 may invite computing device 106 to share data with an application 108 executing on computing device 106. Thus, the messaging data may be received at a load balancer (e.g., load balancer 206). In addition to shared content included in the messaging data, a session identifier may be included in the messaging data so that the application 104 and / or computing device 102, and the application 108 and / or computing device 106 can communicate using the same session identifier. Method 700 may proceed to 706, where the load balancer may determine a WebSocket server from a WebSocket server cluster to forward the received message data. In examples, the selected Web Socket server may correspond to a Web Socket server that has available resources, a Web Socket server that is physically closer to one or more clients associated with the session identifier, a Web Socket server that has a lower round trip delay than other Web Socket servers, etc. In some examples, the Web Socket server cluster may be the same as or similar to Web Socket server cluster 208.

[0047] Method 700 may then proceed to 708, where the determined WebSocket server may send the message data to the object storage server. In an example, the object storage server may include or otherwise access a database or memory, for example, to store the message data in a queue at 710. That is, the object storage server may push the message data into a queue for later retrieval. Once the message data is stored, method 700 may end. In an example, the object storage server is the same as or similar to WebSocket storage 218, and the queue is the same as or similar to queue 220.

[0048] Referring now to FIG. 8 , a simplified method 800 for retrieving data in a queue associated with WebSocket storage will be described in accordance with an example of the present disclosure. The general order of steps of method 800 is shown in FIG. 8 . Generally, method 800 begins at 802 and ends at 810. Method 800 may include more or fewer steps, or the order of steps may be configured differently than those shown in FIG. 8 . Method 800 may be implemented as a set of computer-executable instructions executed by a computer system and may be encoded or stored on a computer-readable medium. In an exemplary aspect, method 800 is performed by one or more servers in a cloud environment. For example, one or more aspects of method 800 may be performed by content services platform 112. However, it should be understood that aspects of method 800 may be performed by one or more processing devices in addition to content services platform 112. Additionally, method 800 may be performed by gates or circuits associated with a processor, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a system on a chip (SOC), a neural processing unit, or other hardware device. Method 800 is described below with reference to the systems, components, modules, software, data structures, user interfaces, etc., described in connection with FIGS. 1-7.

[0049] Method 800 starts at 802 and proceeds to 804. At 804, at least one of a WebSocket server or an object storage server retrieves message data from the WebSocket storage that was previously pushed to the queue. For example, queue 220 may contain message data created at a first client. Once retrieved, the message data may be sent to other clients associated with the same session as the first client. In an example, each queue may be associated with a session identifier, where each session identifier may be associated with multiple unique client identifiers. Thus, based on the client associated with the session identifier, the message data may be sent to a client other than the client that originally sent the message data at 808. Once the message data is retrieved from the queue, the message data may be sent to a load balancer, such as load balancer 206, at 806. The load balancer may then send the message data to the other clients associated with the session identifier. Method 800 may then end at 810.

[0050] 9 is a block diagram illustrating the physical components (e.g., hardware) of a computing system 902 that can be used to implement aspects of the present disclosure. The computing system 902 components described below may conform to the computing devices and / or processing devices described above. In a basic configuration, the computing system 902 may include at least one processing unit 920 and system memory 906. Depending on the configuration and type of computing system, the system memory 906 may include, but is not limited to, volatile storage (e.g., random access memory (RAM)), non-volatile storage (e.g., read-only memory (ROM)), flash memory, or any combination of such memory.

[0051] The system memory 906 may include an operating system 922 and one or more program modules 924 suitable for executing software applications 928, such as one or more components supported by the system described herein. By way of example, the system memory 906 may include a load balancer 926, a WebSocket server 930, a content server 932, and a WebSocket storage server 938. In some examples, the computing system 902 may perform one or more functions of the content services platform 112. Each function provided by the computing system 902 may be virtualized within a unique service cluster. Each service cluster may perform a different function of the content services platform 112. The service clusters may be hosted on virtual machines within an exemplary cloud network. The exemplary cloud network may include multiple geographically distinct deployment locations (e.g., data centers) where various virtual machines are physically deployed. While the computing system 902 depicts multiple applications 928, the computing system 902 may include a single application 928. Thus, there may be multiple distributed computing systems 902 that together perform at least some of the functionality of the content services platform 112 .

[0052] In examples, the load balancer 926 may be the same as or similar to the load balancer 206. In some examples, the WebSocket server 930 is the same as or similar to the WebSocket servers in the WebSocket server cluster 208. Similarly, the content server 932 is the same as or similar to the content servers in the content server cluster 210. The WebSocket storage server 938 may be the same as or similar to the server for the WebSocket storage 218. For example, the operating system 922 may be adapted to control the operation of the computing system 902.

[0053] Additionally, examples of the present disclosure may be implemented in conjunction with a graphics library, other operating systems, or any other application program, but are not limited to any particular application or system. This basic configuration of computing system 902 is illustrated in FIG. 9 by those components within item 934. Computing system 902 may have additional features or functionality. For example, computing system 902 may further include additional data storage devices (removable and / or non-removable), such as magnetic disks, optical disks, or tape. Such additional storage is illustrated in FIG. 9 by removable storage device 908 and non-removable storage device 910. In an example, object storage 936 may be the same as or similar to object storage 214.

[0054] As mentioned above, a number of program modules and data files may be stored in the computing system 902. The program modules 924 (e.g., applications 928), when executed on the processing unit 920, may perform processes including, but not limited to, the aspects described herein. Other program modules that may be used in accordance with aspects of the present disclosure may include email and contact applications, word processing applications, spreadsheet applications, database applications, slide presentation applications, drafting programs, or computer-aided programs, etc.

[0055] Furthermore, examples of the present disclosure may be implemented on electrical circuits, discrete electronic components, packaged or integrated electronic chips containing logic gates, circuits utilizing a microprocessor, or a single chip containing electronic components or a microprocessor. For example, some examples of the present disclosure may be implemented via a system-on-chip (SOC) in which each or multiple components shown in FIG. 9 may be integrated onto a single integrated circuit. Such an SOC device may include one or more processing units, graphics units, communications units, system virtualization units, and various application functions, all of which may be integrated (or "written") onto the chip substrate as a single integrated circuit. When operating via an SOC, the functionality described herein related to the client's ability to switch protocols may operate via application-specific logic integrated with other components of the computing system 902 on a single integrated circuit (chip). Examples of the present disclosure may also be implemented using other technologies, including, but not limited to, mechanical, optical, fluidic, and quantum technologies, capable of performing logical operations such as AND, OR, and NOT. Furthermore, examples of the present disclosure may be implemented within a general-purpose computer or any other circuit or system.

[0056] The computing system 902 may further include one or more input devices 912, such as a keyboard, mouse, pen, acoustic or voice input device, touch or swipe input device, etc. Output devices 914, such as a display, speakers, printer, etc., may also be included. The above devices are examples, and other devices may be used. The computing system 902 may also include one or more communication connections 916 that enable communication with other computing devices 918, such as computing device 102 and / or computing device 106. Examples of suitable communication connections 916 include, but are not limited to, radio frequency (RF) transmitter, receiver, and / or transceiver circuitry, a universal serial bus (USB), a parallel port, and / or a serial port.

[0057] As used herein, the term computer-readable medium may include computer storage media. Computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer-readable instructions, data structures, or program modules. System memory 906, removable storage device 908, and non-removable storage device 910 are all examples of computer storage media (e.g., memory storage). Computer storage media may include RAM, ROM, electrically erasable read-only memory (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other article used to store information and accessible by computing system 902. Any such computer storage media may be part of computing system 902. Computer storage media do not include carrier waves or other propagated or modulated data signals.

[0058] Communication media may be embodied by computer-readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and includes any information delivery media. The term "modulated data signal" may refer to a signal that has one or more characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media may include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), infrared, and other wireless media.

[0059] 10A and 10B illustrate a computing system 1002, such as a mobile phone, smartphone, wearable computer (such as a smartwatch), tablet computer, desktop computer, laptop computer, etc., that can be used to implement examples of the present disclosure. Referring to FIG. 10A, one embodiment of a computing system 1002 for implementing these embodiments is shown. In a basic configuration, the computing system 1002 is a desktop computer having both input and output elements. The computing system 1002 typically includes a display 1006 and one or more input buttons 1004a-e that allow a user to input information into the computing system 1002. The display 1006 of the computing system 1002 may also function as an input device (e.g., a touchscreen display).

[0060] If included, optional secondary input element 1008 allows for additional user input. Secondary input element 1008 may be a rotary switch, a button, or any other type of manual input element. In alternative embodiments, computing system 1002 may incorporate more or fewer input elements.

[0061] In yet another alternative example, computing system 1002 is a mobile phone system, such as a cellular telephone. Computing system 1002 may further include an optional keypad 1014 / 1026. Optional keypad 1014 may be a physical keypad or a "soft" keypad generated on a touchscreen display.

[0062] In various examples, the output elements include a display 1006 / 1022 for displaying a graphical user interface (GUI), a visual indicator 1010 (e.g., a light emitting diode 1034), and / or an audio transducer 1012 (e.g., a speaker). In yet another aspect, the computing system 1002 incorporates input and / or output ports, such as an audio input (e.g., a microphone jack), an audio output (e.g., a headphone jack), and a video output (e.g., an HDMI port), to send and receive signals to and from external devices.

[0063] 10B is a block diagram illustrating the architecture of one aspect of a mobile computing system. That is, computing system 1002 may incorporate system (e.g., architecture) 1002 to implement several aspects. In some examples, system 1002 is implemented as a "computing system" capable of running one or more applications (e.g., a browser, email, calendar, contact manager, messaging client, game, and media client / player). In some aspects, system 1002 is integrated as a computing system such as a desktop computer.

[0064] One or more application programs 1038 may be loaded into 1036 and execute on or in association with operating system 1040. Examples of application programs include a telephone dialing program, an email program, a personal information management (PIM) program, a word processing program, a spreadsheet program, an Internet browser program, a messaging program, a map program, a video platform, a video compositing application, and the like. Computing system 1002 further includes a non-volatile storage area 1042 within memory 1036. Non-volatile storage area 1042 may be used to store persistent information that should not be lost when power to system 1002 is removed. Applications 1038 may use information in non-volatile storage area 1042, such as emails or other messages used by email applications, and store it in non-volatile storage area 1168. A synchronization application (not shown) also resides on system 1002 and is programmed to interact with a corresponding synchronization application resident on the host computer to maintain synchronization of information stored in non-volatile storage area 1042 with corresponding information stored on the host computer. It should be understood that other applications may be loaded into non-volatile storage 1042 and run on the computing system 1002 described herein.

[0065] The computing system 1002 includes a power supply 1044, which may be implemented as one or more batteries. The power supply 1044 may also include an external power source, such as an AC adapter or a powered stand that replenishes or recharges the battery.

[0066] The computing system 1002 may further include a wireless interface layer 1032 that performs functions to transmit and receive radio frequency communications. The wireless interface layer 1032 facilitates wireless connectivity between the system 1002 and the "outside world" via a communications carrier or service provider. Transmissions to and from the wireless interface layer 1032 are performed under the control of the operating system 1040. In other words, communications received by the wireless interface layer 1032 can be distributed to application programs 1038 via the operating system 1040, and vice versa.

[0067] The computing system 1002 may further include a video interface 1028 that enables operation via the peripheral port 1024 to record onboard camera still images, video streams, etc. The computing system 1002 may have additional features or functionality. For example, the computing system 1002 may further include additional data storage devices (removable and / or non-removable), such as magnetic disks, optical disks, or tape. Such additional storage is illustrated in FIG. 10B by non-volatile storage area 1042. The audio interface 1030 is used to provide audible signals to and receive audible signals from a user. For example, in addition to being coupled to the audio transducer 1012, the audio interface 1030 may be coupled to a microphone to receive audible input, such as to facilitate a telephone conversation and / or to receive audio while recording video. According to embodiments of the present disclosure, the microphone may also function as an audio sensor to facilitate control of notifications, as described below. Computing system 1002 may further include a video interface 1028 that enables operation of onboard camera 1016 to record still images, video streams, etc. Components of computing system 1002 may be directly coupled to power source 1044 so that when activated, they remain turned on for a duration specified by a notification mechanism, even when processor 1020 and / or 1018 and other components are disconnected to conserve battery power. LED 1034 may be programmed to remain illuminated indefinitely until a user takes an action that indicates the device is powered on.

[0068] As described above, data / information generated by or obtained by and stored via computing system 1002 may be stored locally on computing system 1002, or the data may be stored in any number of storage media accessible by the device via wireless interface layer 1032 or via a wired connection between computing system 1002 and another computing system associated with computing system 1002 (e.g., a server computer in a distributed computing network, such as the Internet). Such data / information may be accessed via computing system 1002, via wireless interface layer 1032, or via a distributed computing network. Similarly, such data / information may be readily transmitted between computing systems for storage and use in accordance with known data / information transmission and storage means, including electronic mail and collaborative data / information sharing systems.

[0069] 11 illustrates one aspect of a system architecture for processing data received at a computing system from a remote source, such as a general-purpose computing device 1102, a tablet computing device 1104, or a mobile computing device 1106, as described above. In an example, computing device 1102 may invite tablet computing device 1104 and / or mobile computing device 1106 to join a session so that information, such as graphical information, can be shared between the devices. Content at server device 1112 may be stored on a different communication channel or other storage type.

[0070] One or more of the program modules 924 or software applications 928 described above may be used by the server device 1112 and / or the general-purpose computing device 1102, tablet computing device 1104, or mobile computing device 1206, as described above. For example, the server device 1112 may include a load balancer 1116, a WebSocket server 1118, a content server 1120, and a WebSocket storage server 1124. In some examples, the server device 1112 may perform one or more functions of the content services platform 112. Each function provided by the server device 1112 may be virtualized within a unique service cluster. Each service cluster may perform a different function of the content services platform 112. The service clusters may be hosted on virtual machines in an exemplary cloud network. The exemplary cloud network may include multiple geographically distinct deployment locations (e.g., data centers) where various virtual machines are physically deployed. Although the server device 1112 shows multiple components 928, the server device 1112 may include a single application or component. Thus, there may be multiple distributed server devices 1112 that together perform at least some of the functionality of the content services platform 112 .

[0071] In examples, load balancer 1116 may be the same as or similar to load balancer 206. In some examples, WebSocket server 1118 is the same as or similar to the WebSocket servers in WebSocket server cluster 208. Similarly, content server 1120 is the same as or similar to the content servers in content server cluster 210. WebSocket storage server 1124 may be the same as or similar to the server for WebSocket storage 218. Any of these examples of computing devices may retrieve content from store 1114 or store content in store 1114. In examples, 1122 may store message information.

[0072] Server device 1112 may provide data to and from client computing devices, such as general-purpose computing device 1102, tablet computing device 1104, and / or mobile computing device 1106 (e.g., smartphones), via network 1110. As an example, the computer system described above may be implemented within general-purpose computing device 1102, tablet computing device 1104, and / or application 1108 (e.g., smartphone). In addition to receiving graphical data that can be used for pre-processing in a graphic-originating system or post-processing in a receiving computing system, any of these examples of computing devices may obtain content from store 1114.

[0073] Additionally, aspects and functionality described herein may operate on a distributed system (e.g., a cloud-based computing system) where application functionality, memory, data storage and retrieval, and various processing functions may operate remotely from one another over a distributed computing network (e.g., the Internet or an intranet). Various types of user interfaces and information may be displayed via on-board computing device displays or via remote display units associated with one or more computing devices. For example, various types of user interfaces and information may be displayed and interacted with on a wall projecting these various types of user interfaces and information. Interactions with multiple computing systems that can be utilized to implement examples of the present invention include keystroke input, touchscreen input, voice or other audio input, gesture input, etc. In the case of gesture input, the associated computing device includes detection (e.g., camera) capabilities for capturing and interpreting user gestures to control functions of the computing device.

[0074] For example, aspects of the present disclosure are described above with reference to block diagrams and / or operational illustrations of methods, systems, and computer program products according to aspects of the present disclosure. The functions / acts noted in the blocks may occur out of the order shown in any flowchart. For example, two blocks shown in succession may in fact be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending on the functions / acts involved.

[0075] The present disclosure relates to a system and method for synchronizing message data between at least two clients, at least according to the examples provided in the following sections.

[0076] (Al) In one aspect, some examples include a method for synchronizing message data between at least two clients, the method including: receiving a request from a first client to initiate a shared session that includes a first client identifier; providing a session identifier to the first client associated with the first client identifier based on the received request; associating the first client identifier with the session identifier; receiving a request from a second client to be associated with the session identifier; associating the second client identifier with the session identifier; receiving message data from the first client; adding the message data to a queue associated with the session identifier; adding the message data with the session identifier to a database; and providing the message data from the queue to the second client based on the session identifier.

[0077] (A2) In some examples of A1, the method further includes receiving the message data from the first client at a load balancer; determining at the load balancer an instance of a WebSocket server based on resource availability; sending the message data to the determined instance of the WebSocket server; and providing the message data from the WebSocket server to a WebSocket storage including the queue.

[0078] (A3) In some examples of A1 to A2, the method further includes receiving the message data from the WebSocket storage at the load balancer, and providing the message data from a queue in the WebSocket storage to the second client.

[0079] (A4) In some examples of A1 to A3, the method further includes receiving the message data from the first client at a load balancer; determining, at the load balancer, an instance of a WebSocket server based on resource availability; sending the message data to the determined instance of the WebSocket server; and providing the message data from the WebSocket server to a content service cluster, which stores the message data in the database.

[0080] (A5) In some examples of A1 to A4, the message data includes object information and session information, the information being stored in a location in the database different from the session identifier.

[0081] (A6) In some examples of A1-A5, the object information includes a graphical object to be displayed on a display associated with the first client for an augmented reality session.

[0082] (A7) In some examples of A1 to A6, the message data and the session identifier are stored in an in-memory database.

[0083] In yet another aspect, some examples include a computing system comprising one or more processors and a memory coupled to the one or more processors, the memory storing one or more instructions that, when executed by the one or more processors, cause the one or more processors to perform any of the methods described herein (e.g., A1-A7 above).

[0084] In yet another aspect, some examples include a non-transitory computer-readable storage medium storing one or more programs for execution by one or more processors of a storage device, the one or more programs including instructions for performing any of the methods described herein (e.g., A1-A7 above).

[0085] The description and illustration of one or more aspects provided herein are not intended to restrict or limit the scope of the claimed disclosure in any manner. The aspects, examples, and details described herein are deemed sufficient to convey proprietary rights and to enable others to make and use the best mode of the claimed disclosure. The claimed disclosure should not be construed as limited to the aspects, examples, or details described herein. Various features (structural features and method features), whether illustrated or described in combination or individually, are intended to be selectively included or omitted to form examples having particular feature sets. With the description and illustrations provided herein, those skilled in the art may envision changes, modifications, and alternative embodiments within the spirit of the broader aspects of the general inventive concept embodied herein, without departing from the broader scope of the claimed disclosure.

Claims

1. A method for synchronizing message data, including augmented reality content, between at least two clients, the method being performed by a content services platform, the method comprising: receiving a request from a first client to initiate a shared session using a WebSocket connection, the request including a first client identifier; providing a session identifier to the first client associated with the first client identifier based on the received request; associating the first client identifier with the session identifier; receiving a request from a second client to be associated with the session identifier; Associating a second client identifier with the session identifier; receiving the message data from the first client; adding the message data to a queue associated with the session identifier; adding the message data to a database along with the session identifier; providing the message data from the queue to the second client based on the session identifier; receiving the message data from the first client at a load balancer; determining, in the load balancer, a WebSocket server instance based on resource availability; sending the message data to the determined instance of the WebSocket server; providing the message data from the WebSocket server to a WebSocket storage that includes the queue; A method comprising:

2. receiving the message data from the WebSocket storage at the load balancer; providing the message data from the WebSocket storage queue to the second client; The method of claim 1 further comprising:

3. A method for synchronizing message data including augmented reality content between at least two clients, the method being performed by a content services platform, comprising: receiving a request from a first client to initiate a shared session using a WebSocket connection, the request including a first client identifier; providing a session identifier to the first client associated with the first client identifier based on the received request; associating the first client identifier with the session identifier; receiving a request from a second client to be associated with the session identifier; Associating a second client identifier with the session identifier; receiving the message data from the first client; adding the message data to a queue associated with the session identifier; adding the message data to a database along with the session identifier; providing the message data from the queue to the second client based on the session identifier; receiving the message data from the first client at a load balancer; determining, in the load balancer, a WebSocket server instance based on resource availability; sending the message data to the determined instance of the WebSocket server; providing the message data from the WebSocket server to a content service cluster that stores the message data in the database; A method comprising:

4. The message data includes object information and session information, and the object information is stored in a location in the database different from the session identifier. The method of claim 1.

5. The object information includes a graphical object to be displayed on a display associated with the first client for an augmented reality session. The method of claim 4.

6. The message data and the session identifier are stored in an in-memory database. The method of claim 1.

7. A processor; When executed by the processor, the content services platform receiving a request from a first client to initiate a shared session using a WebSocket connection, the request including a first client identifier; providing a session identifier to the first client associated with the first client identifier based on the received request; Associating the first client identifier with the session identifier; receiving a request from a second client to be associated with the session identifier; Associating a second client identifier with the session identifier; receiving message data from the first client, the message data including augmented reality content; adding the message data to a queue associated with the session identifier; adding the message data to a database along with the session identifier; providing the message data from the queue to the second client based on the session identifier; receiving the message data from the first client at a load balancer; determining, in the load balancer, an instance of a WebSocket server based on resource availability; Sending the message data to the determined instance of the WebSocket server; Providing the message data from the WebSocket server to a WebSocket storage that includes the queue. and a memory storing instructions for causing the content services platform to operate in such a manner.

8. The instructions further configure the content services platform to: receiving the message data from the WebSocket storage at the load balancer; providing the message data from the queue of the web socket storage to the second client; The content services platform according to claim 7, wherein the content services platform is operated as follows:

9. A processor; When executed by the processor, the content services platform receiving a request from a first client to initiate a shared session using a WebSocket connection, the request including a first client identifier; providing a session identifier to the first client associated with the first client identifier based on the received request; Associating the first client identifier with the session identifier; receiving a request from a second client to be associated with the session identifier; Associating a second client identifier with the session identifier; receiving message data from the first client, the message data including augmented reality content; adding the message data to a queue associated with the session identifier; adding the message data to a database along with the session identifier; providing the message data from the queue to the second client based on the session identifier; receiving the message data from the first client at a load balancer; determining, in the load balancer, an instance of a WebSocket server based on resource availability; Sending the message data to the determined instance of the WebSocket server; The WebSocket server provides the message data to a content service cluster that stores the message data in the database. and a memory storing instructions for causing the content services platform to operate in such a manner.

10. The message data includes object information and session information, and the object information is stored in a location in the database different from the session identifier. The content services platform of claim 9.

11. The object information includes a graphical object to be displayed on a display associated with the first client for an augmented reality session. The content services platform of claim 10.

12. The message data and the session identifier are stored in an in-memory database. The content services platform of claim 7.

13. When executed by a computer of a content services platform, the computer: receiving a request from a first client to initiate a shared session using a WebSocket connection, the request including a first client identifier; providing a session identifier to the first client associated with the first client identifier based on the received request; associating the first client identifier with the session identifier; receiving a request from a second client to be associated with the session identifier; Associating a second client identifier with the session identifier; receiving message data from the first client, the message data including augmented reality content; adding the message data to a queue associated with the session identifier; adding the message data to a database along with the session identifier; providing the message data from the queue to the second client based on the session identifier; and instructions to execute The instructions further cause the computer to: receiving the message data from the first client at a load balancer; determining, in the load balancer, an instance of a WebSocket server based on resource availability; Sending the message data to the determined instance of the WebSocket server; Providing the message data from the WebSocket server to a WebSocket storage that includes the queue. A computer-readable storage medium that operates in such a manner.

14. The instructions further cause the computer to: receiving the message data from the WebSocket storage at the load balancer; providing the message data from the queue of the web socket storage to the second client; The computer-readable storage medium of claim 13, which operates as follows:

15. When executed by a computer of a content services platform, the computer: receiving a request from a first client to initiate a shared session using a WebSocket connection, the request including a first client identifier; providing a session identifier to the first client associated with the first client identifier based on the received request; associating the first client identifier with the session identifier; receiving a request from a second client to be associated with the session identifier; Associating a second client identifier with the session identifier; receiving message data from the first client, the message data including augmented reality content; adding the message data to a queue associated with the session identifier; adding the message data to a database along with the session identifier; providing the message data from the queue to the second client based on the session identifier; and instructions to execute The instructions further cause the computer to: receiving the message data from the first client at a load balancer; determining, in the load balancer, an instance of a WebSocket server based on resource availability; Sending the message data to the determined instance of the WebSocket server; The WebSocket server provides the message data to a content service cluster that stores the message data in the database. A computer-readable storage medium that operates in such a manner.

16. The message data includes object information and session information, and the object information is stored in a location in the database different from the session identifier.

16. The computer-readable storage medium of claim 15.

17. The message data and the session identifier are stored in an in-memory database. The computer-readable storage medium of claim 13.

Citation Information

Patent Citations

  • Message synchronization method and device, electronic equipment and readable storage medium

    CN112492048A

  • Collaborative server and system, and method and program for the same

    JP2005242899A

  • Uniqueness assurance support program, service provision system and method for achieving uniqueness assurance

    JP2010244501A

  • Message transmitting and receiving system, message transmitting and receiving method, message relay server, and message transmission and reception program

    JP2011034511A

  • Screen sharing system, management server, information processing apparatus, screen sharing management method, program and recording medium

    JP2011192036A