Source: https://patents.google.com/patent/US20150058407A1/en
Timestamp: 2019-10-18 03:52:36
Document Index: 532797565

Matched Legal Cases: ['Application No. 61', 'art 500', 'art 500', 'art 1100', 'art 1100', 'art 2000', 'art 2000', 'art 2000', 'art 2000', 'art 2000', 'art 2000', 'art 2000']

US20150058407A1 - Systems, methods, and apparatuses for implementing the simultaneous display of multiple browser client cursors at each browser client common to a shared browsing session - Google Patents
Systems, methods, and apparatuses for implementing the simultaneous display of multiple browser client cursors at each browser client common to a shared browsing session Download PDF
US20150058407A1
US20150058407A1 US14/513,109 US201414513109A US2015058407A1 US 20150058407 A1 US20150058407 A1 US 20150058407A1 US 201414513109 A US201414513109 A US 201414513109A US 2015058407 A1 US2015058407 A1 US 2015058407A1
US14/513,109
2011-02-11 Priority to US201161442105P priority Critical
2012-02-13 Priority to US13/372,411 priority patent/US20120210243A1/en
2013-11-15 Priority to US14/081,971 priority patent/US20140123033A1/en
2014-10-13 Application filed by salesforce com Inc, GOINSTANT Inc filed Critical salesforce com Inc
2014-10-13 Priority to US14/513,109 priority patent/US20150058407A1/en
2015-01-05 Assigned to SALESFORCE.COM, INC. reassignment SALESFORCE.COM, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: UHMA, GAVIN ANDREW ROSS, MACDONALD, JEVON
2015-02-26 Publication of US20150058407A1 publication Critical patent/US20150058407A1/en
This U.S. Divisional patent application claims priority to U.S. Utility patent application Ser. No. 14/081,971 filed on Nov. 15, 2013 entitled “Systems, Methods, and Apparatuses for Implementing a Shared Session Server to Enable Multiple Browser Clients to Simultaneously View and Interact with Common Web Content in a Shared Browsing Session,” and further claims priority to U.S. Utility patent application Ser. No. 13/372,411 filed on Feb. 13, 2012 entitled “Web Co-Navigation,” and further claims priority to U.S. Provisional Patent Application No. 61/442,105 filed on Feb. 11, 2011, entitled “Webpage Sharing and Collaboration System, Method, and Storage Medium,” each of which are incorporated herein by reference in their entirety.
Browsing the Web is a solitary experience. It is possible to follow recent posts in comments sections of web pages or follow a blog, but the experience, while relatively up-to-date, is still an observation of content that is left behind by another; it is historical content. Existing systems for sharing an collaboration of web pages and websites limit users to transmitting the image of one system's desktop (the desktop of the “primary user”) to one or more other systems. In such systems, a primary system installs software that transmits images of the primary system's desktop to other users. The primary user essentially sends the results of a browsing session as it happens to other users. The other users are relegated to bystanders viewing the results of the primary user's session. The foregoing example of the state of the art is intended to be illustrative and not exclusive.
Embodiments of the invention relate generally to the field of computing, and more particularly, to systems, methods, and apparatuses for implementing the simultaneous display of multiple browser client cursors at each browser client common to a shared browsing session.
FIG. 11A depicts a flowchart of an example of a method for downloading a remote page. FIG. 11B is a continuation of FIG. 11A which depicts a flowchart of an example of a method for downloading a remote page.
FIG. 19 depicts a flowchart of an example of a method for handling iframes and FIG. 20 depicts a flowchart of an example of a method for handling scrolling events.
The shared session client devices 112 are notified of changes to content and are instructed to make a request to the shared session server 108 with a URL structured to download the shared content from the cache. Users of the shared session client devices 112 can interact with the shared content through mouse, keyboard, and other events (e.g. hovers, scrolling, etc.) and/or using collaboration features. The shared session client device 112-1 for other one of the shared session client devices 112) can send events or features that modify the shared content structure, e.g., a document object model (“DOM”) of the shared content, to the shared session server 108, which are distributed to and replicated on the other shared session client devices 112 (e.g. by unicast, multicast, or broadcast). In a specific implementation, an event, function, or change to the shared content structure that originates on one of the shared session client devices 112 can be replicated on a server instance of the shared content and the shared session server 108 can store the resulting content structure for later retrieval.
In the example of FIG. 2, the load balancing engine 202 controls communication between real-time clients (not shown) and the real-time server 204. The load balancing engine 202 can improve the efficiency with which requests or data exchanges are handled relative to a system that does not have load balancing under a set of network conditions. In a specific implementation, the load balancing engine 202 has Nginx installed on it.
URL Remarks / loads the home page /_monit is a call from monit /_loadbalancer is a call from Amazon Web Service (“AWS”) to check status of core instance /search comes from search bar (either the home page or toolbar) /share/* will get loaded into an iframe /* will load parent frame and pass remaining string to “/share” in an iframe
In the example of FIG. 5, the flowchart 500 continues to module 512 with adding URL base tags, to URL resources and targets, to source code. For example, www.sashjoin.com could be appended to the front of every link and/or form. In another example, webpages or websites that required their resources to be proxied, could have the tags script, style, image, etc., prefixed with by a shared content synchronization server engine (e.g. slashjoin.com:9000/). The webpages or websites could have the tags, etc. prefixed by a resource server (see, e.g., FIG. 2, resource server 210).
In the example of FIG. 5, the flowchart 500 ends at module 518 with saving the modified session cache. For example, the modified session cache can be added to a datastore on an in-memory server (see, e.g., FIG. 2, in-memory server 0.212).
FIG. 10 depicts a flowchart of an example of a method for determining session ID and remote URL from a requested URL. This figure is best understood with an example, making reference to the elements depicted in FIG. 2. At module 1002 the pathname is retrieved by the core-server 208. In this example, the pathname is “slashjoin.com/gavin/gavinuhma.com”. At decision point 1004, the coreserver 208 determines if the pathname is a URL. If the pathname was a URL, the internal URL is set to the pathname at module 1006; however, in this example the pathname is not a URL but a compound pathname containing both a session ID (also called a channel throughout this disclosure); therefore, at module 1008, the core-server 208 begins to parse the pathname by identifying the level-1 pathname. In this example the level-1 pathname is “gavin”. At decision point 1010, the core-server 208 determines whether the level-1 pathname is a search term which is determined by the existence of characters that are not allowed in the session ID (e.g. encoded characters, etc.) or by the lack of the level-1 pathname existing as a session ID in the data store. Because the level-1 pathname is not a search term, the session ID is set to the level-1 pathname at module 1012. Therefore, in this example, the session ID is “gavin”. Next, the core-server 208 parses the remainder of the pathname to identify the level-2 pathname at decision point 1014. If level-2 does not exist the session cache is loaded for the last page that was viewed on the session at module 1016. At module 1018 the core-server 208 gets the level-2 pathname. At decision point 1020 the core server 208 determines if the level-2 pathname is a search term. If not, the internal URL is set to the level-2 pathname at module 1022. Therefore, in this example, the internal URL is set to “gavinuhma.com”. However, if the level-1 pathname or the level-2 pathname were search terms, the internal URL would have been set to the default search engine URL with the addition of the level-1 or level-2 pathname, at modules 1024 and 1026, respectively. After modules 1022, 1024, or 1026, the web client engine 214 downloads the remote page at module 1028 from a content server using the internal URL The core-server 208 also loads the downloaded remote page into a new html page including an iframe at module 1030. Continuing the above example, the iframe source would be set to “http://slashjoin.com/share/gavin/gavinuhma.com” thereby prefixing the “/share” string so that the server will know how to handle the page when the iframe is loaded).
FIG. 11A and FIG. 11B depict a flowchart 1100 of an example of a method for downloading a remote page. At module 1102 a new internal URL is set. At module 1104, the web client engine 214 verifies that the domain name contained in the internal URL is on the session's whitelist. If it is determined at decision point 1106 that the domain name is not on the session's whitelist, the session is sent to the last authorized URL at module 1108 and the response is sent to the client 1110. However, if the domain name is on the whitelist, the web client engine 214 determines at decision point 1112 whether the webpage corresponding to the internal URL has a redirect cache corresponding to the URL in the data store. If there is a redirect cache, the redirected URL is set as the internal URL at module 1102 and the flowchart 1100 continues as described previously. However, if there is not a redirect cache, the web client engine 214 determines at decision point 1114 whether the webpage has a source cache corresponding to the URL in the data store. If there is a source cache, at module 1110 the response is sent to the client. However, if there is not a source cache, the protocol is determined and set at module 1116. Next, the web client engine 214 identifies if there is a port address contained in the internal URL at decision point 1118. If not, the default port is set for the protocol identified at module 1120. Regardless, the http headers and HTTP body are created at module 1122 and the request is sent to the remote server at module 1124 by the web client engine 214.
In the example of FIG. 20, the flowchart 2000 continues to decision point 2012 with determining whether scroll position=last scroll position. If so (2012-Y), then the flowchart 2000 ends without reporting scroll position. If not (2012-N), then the flowchart 2000 continues to decision point 2014 with determining whether scroll position=last received scroll position. If the scroll position is the same as a scroll position that was last received (2014-Y), then the flowchart 2000 ends without reporting scroll position. If not (2014-N), then the flowchart 2000 continues to module 2016 with sending current scroll position to shared session clients, the flowchart 2000 returns to module 2004, and the flowchart 2000 continues as described previously.
A method comprising: establishing a shared browsing session; displaying web content; receiving an indication through a user interface that a shared browsing session is in presenter mode: sending the indication over a network interface data sufficient to display the web content, including changes made to the web content, in real-time to a participant with limited permission to make changes from interacting with the web content. The method, further comprising: tying a permission to a target, event type, user, or a combination of these.
1. A method at a shared session server having at least a processor and a memory therein for enabling a plurality of shared session clients to view and interact with content simultaneously within a shared browsing session common to the plurality of shared session clients, wherein the method comprises:
creating the shared browsing session at the shared session server;
connecting the shared browsing session with at least a first shared session client and a second shared session client communicatively interfaced with the shared session server via a network;
receiving a request from the first shared session client for a URL;
downloading, at the shared session server, a webpage corresponding to the URL;
modifying source code of the webpage at the shared session server; and
returning the webpage having the modified source code therein to the first and second shared session clients for display.
2. The method of claim 1, wherein modifying source code of the webpage at the shared session server comprises modifying the source code of the webpage to embed code that enables a user interface for collaborating on the webpage by the first and second shared session clients.
3. The method of claim 1, wherein modifying source code of the webpage at the shared session server comprises converting all URLs within the webpage which are capable of changing location.
4. The method of claim 3, wherein converting all URLs within the webpage which are capable of changing location comprises converting any of links, forms, URLs, and URLs within scripts to of the webpage to direct the first and second shared session clients to download resources from the shared session server.
5. The method of claim 1, wherein modifying source code of the webpage at the shared session server comprises modifying the source code of the webpage to direct any shared session client of the shared browsing session to download the webpage's resources from the shared session server in place of a content server referenced by the URL requested.
6. The method of claim 5, wherein modifying source code of the webpage at the shared session server further comprises:
removing or modifying any source code from the webpage that prevents the content from displaying or behaving at the first and second shared session clients as it would if such content were downloaded from a content server referenced by the URL requested during an unshared session rather than having been downloaded at the shared session server on behalf of the first and second shared session clients during the shared browsing session.
7. The method of claim 1, wherein modifying source code of the webpage at the shared session server comprises adding collaboration features and user interface features to the source code at the shared session server prior to returning the webpage having the modified source code therein to the first and second shared session clients for display.
8. The method of claim 1, wherein modifying source code of the webpage at the shared session server comprises performing frame busting operations to prevent the webpage, as modified and returned to the first and second shared session clients for display, from loading into another party's framed webpage.
storing the modified source code as cached content at the shared session server for later retrieval; and
wherein returning the webpage having the modified source code therein to the first and second shared session clients for display comprises sending the cached content to at least one of the plurality of shared session clients in the shared browsing session.
notifying the plurality of shared session clients of changes to the content being shared via the shared browsing session; and
instructing the plurality of shared session clients to make a request to the shared session server with a URL structured to download the shared content from a cache at the shared session server.
11. Non-transitory computer readable storage media having instructions stored thereon that, when executed by a processor of a shared session server, the instructions cause the shared session server to perform operations for enabling a plurality of shared session clients to view and interact with content simultaneously within a shared browsing session common to the plurality of shared session clients, the operations comprising:
12. The non-transitory computer readable storage media of claim 11, wherein modifying source code of the webpage at the shared session server comprises modifying the source code of the webpage to embed code that enables a user interface for collaborating on the webpage by the first and second shared session clients.
13. The non-transitory computer readable storage media of claim 11, wherein modifying source code of the webpage at the shared session server comprises converting all URLs within the webpage which are capable of changing location.
14. The non-transitory computer readable storage media of claim 11, wherein modifying source code of the webpage at the shared session server comprises modifying the source code of the webpage to direct any shared session client of the shared browsing session to download the webpage's resources from the shared session server in place of a content server referenced by the URL requested.
15. The non-transitory computer readable storage media of claim 14, wherein modifying source code of the webpage at the shared session server further comprises:
16. The non-transitory computer readable storage media of claim 11, wherein modifying source code of the webpage at the shared session server comprises adding collaboration features and user interface features to the source code at the shared session server prior to returning the webpage having the modified source code therein to the first and second shared session clients for display.
17. The non-transitory computer readable storage media of claim 11, wherein the instructions cause the shared session server to perform operations further comprising:
18. The non-transitory computer readable storage media of claim 11, wherein the instructions cause the shared session server to perform operations further comprising:
19. The non-transitory computer readable storage media of claim 11, wherein modifying source code of the webpage at the shared session server comprises performing frame busting operations to prevent the webpage, as modified and returned to the first and second shared session clients for display, from loading into another party's framed webpage.
20. A shared session server to enable a plurality of shared session clients to view and interact with content simultaneously within a shared browsing session common to the plurality of shared session clients, wherein the shared session server comprises:
a shared content synchronization server engine to create the shared browsing session at the shared session server;
a load balancing engine to connect the shared browsing session with at least a first shared session client and a second shared session client communicatively interfaced with the shared session server via a network;
a core-server to receive a request from the first shared session client for a URL;
a web client engine to download, at the shared session server, a webpage corresponding to the URL;
a real-time server engine to modify source code of the webpage at the shared session server; and
the core-server to further return the webpage having the modified source code therein to the first and second shared session clients for display.
21. The shared session server of claim 20, wherein the core-server is to further respond to port 80 requests from clients and serve web pages to the first and second shared session clients.
US14/513,109 2011-02-11 2014-10-13 Systems, methods, and apparatuses for implementing the simultaneous display of multiple browser client cursors at each browser client common to a shared browsing session Pending US20150058407A1 (en)
US201161442105P true 2011-02-11 2011-02-11
US13/372,411 US20120210243A1 (en) 2011-02-11 2012-02-13 Web co-navigation
US14/081,971 US20140123033A1 (en) 2011-02-11 2013-11-15 Systems, methods, and apparatuses for implementing a shared session server to enable multiple browser clients to simultaneously view and interact with common web content in a shared browsing session
US14/513,109 US20150058407A1 (en) 2011-02-11 2014-10-13 Systems, methods, and apparatuses for implementing the simultaneous display of multiple browser client cursors at each browser client common to a shared browsing session
US14/081,971 Division US20140123033A1 (en) 2011-02-11 2013-11-15 Systems, methods, and apparatuses for implementing a shared session server to enable multiple browser clients to simultaneously view and interact with common web content in a shared browsing session
US20150058407A1 true US20150058407A1 (en) 2015-02-26
US13/372,411 Abandoned US20120210243A1 (en) 2011-02-11 2012-02-13 Web co-navigation
US14/081,971 Abandoned US20140123033A1 (en) 2011-02-11 2013-11-15 Systems, methods, and apparatuses for implementing a shared session server to enable multiple browser clients to simultaneously view and interact with common web content in a shared browsing session
US14/513,109 Pending US20150058407A1 (en) 2011-02-11 2014-10-13 Systems, methods, and apparatuses for implementing the simultaneous display of multiple browser client cursors at each browser client common to a shared browsing session
CN104050253B (en) * 2014-06-12 2018-09-25 北京猎豹网络科技有限公司 One kind of web browser and display methods
WO2009066233A2 (en) * 2007-11-23 2009-05-28 Koninklijke Philips Electronics N.V. Co-browsing (java) scripted html documents
2012-02-13 US US13/372,411 patent/US20120210243A1/en not_active Abandoned
2013-11-15 US US14/081,971 patent/US20140123033A1/en not_active Abandoned
2014-10-13 US US14/513,109 patent/US20150058407A1/en active Pending
US20140123033A1 (en) 2014-05-01
US20120210243A1 (en) 2012-08-16
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:UHMA, GAVIN ANDREW ROSS;MACDONALD, JEVON;SIGNING DATES FROM 20141217 TO 20150105;REEL/FRAME:034632/0419