Patent Publication Number: US-9906614-B2

Title: Real-time content sharing between browsers

Description:
FIELD OF THE INVENTION 
     This disclosure relates generally to data sharing between networked computers, and more specifically to methods that facilitate the selective real-time broadcast of displayed information from a sender&#39;s computer to one or more recipient computers. 
     BACKGROUND 
     As modern computing devices have become increasingly compact and portable, consumers have come to expect their smartphones, tablet computers, laptop computers, and other portable computing devices to be well-suited for a variety of mobile applications. These trends have resulted in the incorporation of a variety of hardware features and software functionality into such devices. One particular class of software applications which has proven to be both useful and commercially successful, especially for portable computers, is remote desktop software applications. Such applications allow a desktop environment generated at a source computer to be displayed at a remote computer. The remote computer is often some type of portable computing device, although this is not necessarily the case. The two computers can communicate with each other via the Internet or another suitable communications medium. The communications generally conform to a platform-independent remote desktop protocol, thereby allowing cross-platform sharing to occur. Keystrokes, mouse clicks, and other user interface interactions registered at the remote device can be transmitted to, and invoked at, the source computer as if such interactions were provided directly at the source computer itself. Remote desktop software is often used for user support, education, collaboration, and remote administration applications, although a wide variety of other applications exist. Examples of commercially available remote desktop software include Windows Remote Desktop Connection (Microsoft Corporation, Redmond, Wash.) and VNC (RealVNC, Cambridge, UK). 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram schematically illustrating selected components of a computer system that can be used to implement certain of the embodiments disclosed herein. 
         FIG. 2  is a data flow diagram schematically illustrating example data flows that occur when a shared content item is broadcast from a content sender&#39;s device to a plurality of content recipients via a networked server. 
         FIG. 3A  is a flowchart illustrating an example method of broadcasting shared content from the perspective of a content sender. 
         FIG. 3B  is a flowchart illustrating an example method of receiving broadcasted content from the perspective of a content recipient. 
         FIG. 4  is a flowchart illustrating an example method of using a networked server to manage broadcast communications between a content sender and a content recipient. 
     
    
    
     DETAILED DESCRIPTION 
     As smartphones, tablet computers, and other portable computing devices have become increasingly ubiquitous, consumers now expect that it will be easy to use such devices to share digital content with other users of such devices. Inter-device communication is particularly useful in the context of multiuser collaboration, where multiple users work together with shared content items in real-time. The multiple users may share a common physical location, such as when they meet or attend a presentation together, or one or more of them may be remotely located, such as in the case of a teleconference or a remote working group. Regardless the users&#39; physical location, enabling them to share and simultaneously view content items can significantly increase the efficacy of the collaborative effort. Despite this, existing content sharing tools tend to suffer from a number of shortcomings. For example, a person attending a meeting or a presentation may have a content item that would be of interest to the presenter and/or other attendees. Because the sharer&#39;s portable device will often be small and not necessarily visible to all attendees, physically displaying the sharer&#39;s screen to other attendees is unsatisfactory. Remote desktop software is not well suited for a collaborator who wishes to share only selected content items, and in any event, using such software raises security concerns with respect to allowing remote control of a local computer. Existing remote desktop software applications also generally require a native application to be installed on both of the connected computers, thus making implementation more cumbersome for impromptu collaboration sessions. Another solution would be for the user who wishes to share content to interrupt the meeting or presentation and provide a reference to the content item which is to be shared. This reference will generally comprise a network address, which requires other attendees to individually navigate to the target content via a sequence of browsing operations. The result is still an inefficient and time-consuming process that precludes instantaneous sharing of content amongst collaborators. 
     Thus, and in accordance with certain of the embodiments disclosed herein, techniques are provided for selectively broadcasting information from a sender&#39;s computer to one or more recipient computers in real-time. For instance, in certain embodiments a user connects to a networked content server that is also accessible by members of a larger user group. The user group may comprise, for example, users attending a collaborative working session or presentation. Using a conventional content browser, such as a web browser, the user browses selected content items which are determined to be of interest to other group members. The user activates a content sharing mode and provides user input that indicates which content is to be shared with other group members. A reference to the shared content is sent to the server which in turn pushes the referenced content to identified content recipients. Content recipients can be identified based on a variety of factors, such as by subscription to a listening channel opened by the content sender, by individual selection by the content sender, and/or by physical proximity to the content sender. Regardless of how the content recipients are identified, the shared content can be automatically displayed to each identified content recipient in a non-intrusive way, such as by appearing in a content browser window or via a system tray notification message. Examples of content items which are well-suited for sharing using the techniques disclosed herein include presentation slides, data cards, infographics, spreadsheets, and text-based documents, although it will be appreciated that other content types may be shared in other applications. Numerous other configurations and variations of the real-time content sharing techniques described herein will be apparent in light of this disclosure. 
     Certain of the embodiments disclosed herein advantageously provide real-time sharing of selected content items between users without any need for content recipients to navigate to the shared content. Once sharing is enabled, content can be broadcast from a content sender with a single user input, such as a single gesture made on a touch sensitive surface. Such embodiments are therefore particularly well-suited for implementation using touch-based devices such as the smartphones and tablet computers which users are likely to take to meetings, presentations and other collaborative working sessions where content sharing is apt to be particularly useful. However other embodiments can be implemented in the context of collaborative content assembly wherein a primary content author relies on other users to aggregate content to be included in a finished work product and to broadcast the aggregated content to the primary author. The various embodiments disclosed herein also provide a content sender with the flexibility to selectively share only those content items provided within a designated browser window, thereby providing greater control over content sharing as compared to existing remote desktop software applications. Implementing the content sharing techniques disclosed herein using browser functionality also eliminates any need for users to install dedicated sharing applications on their respective devices. 
     Certain of the embodiments disclosed herein can also be used outside the context of collaborative content sharing, such as to quickly send content items from the small screen of a portable device to a larger display or projected screen. This allows a user to quickly shift from using a portable device to using a device with a larger display without having to reacquire content which the user had been working with on the portable device. Such implementations may be particularly useful in a retail commerce environment. For example, a shopper browsing merchandise on a smartphone or other portable computing device can send the browsed content to a larger display screen provided in a brick-and-mortar retail setting, thereby allowing the browsed content to be viewed and discussed by a wider audience than just those who can view the individual shopper&#39;s portable device. 
     As used herein, the term “content” refers, in addition to its ordinary meaning, to information intended for direct or indirect consumption by a user, organization, or other human- or computer-controlled entity. For example, the term content encompasses information directly consumed by a user such as when it is displayed on a display device or printed on a piece of paper. The term content also includes information that is not specifically intended for display, and thus also encompasses items such as software, software applications, mobile applications, executable instructions, scripts, hyperlinks, addresses, pointers, metadata, and formatting information. The use of the term content is therefore independent of (a) how the content is presented to a user for consumption and (b) how the content is created and/or rendered. The term “digital content” refers to content which is encoded in binary digits (for example, zeroes and ones). In the context of applications involving digital computers, the terms “content”, “digital content”, and “digital asset” are often used interchangeably. 
     As used herein, the term “content browser” refers, in addition to its ordinary meaning, to a software application capable of retrieving and rendering content obtained from a storage repository. Content that is to be browsed can be identified by a network address that is input by a user or that is selected from previously rendered content in the form of a hyperlink. A content browser can be configured to render content stored according to a wide variety of file formats and protocols. The functionality provided by a content browser can be extended through the use of plugins and/or extensions which can be configured to, for example, establish a WebSocket connection that allows content to be actively pushed between connected devices. A web browser is a class of content browser which is specifically configured for retrieving and rendering content accessible via the World Wide Web (WWW), although many web browsers are also capable of accessing information provided by content servers in private networks and by file servers in a range of different file systems. 
     System Architecture 
       FIG. 1  is a block diagram schematically illustrating selected components of a computer system that can be used to implement certain of the embodiments disclosed herein. As illustrated, these embodiments can be viewed as a series of interactions between a content sender  100 , a content recipient  200 , and a networked server  300 . The architecture and functionality of the various components and subcomponents comprising the computer system illustrated in  FIG. 1  will be described in turn, although it will be appreciated that alternative embodiments may include additional or fewer components, and therefore may not be limited to the particular set of components and the particular hardware architecture illustrated in  FIG. 1 . More specifically, in other embodiments additional or alternative components and subcomponents can be configured to provide other content distribution functionality depending on the needs of a particular application. For example, such additional or alternative components and subcomponents may take the form of one or more server-side modules which interact with or respond to user input received from content sender  100  and/or content recipient  200 . 
     Content sender  100  and content recipient  200  can each be associated with a computer system that comprises, for example, one or more devices selected from a desktop or laptop computer, a workstation, a tablet, a smartphone, a set-top box or any other such computing device. The term “content sender” therefore refers to both a particular user who invokes a content sending process and the computing device from which the content is sent. Likewise, the term “content recipient” refers to both a particular user who receives content and the computing device at which the content is received. Networked server  300  may comprise a content server capable of responding to and fulfilling requests for access to shared resources hosted or otherwise made available via server  300 . In certain embodiments such resources include content stored in a content repository  310  hosted by server  300 . Content sender  100 , content recipient  200 , and networked server  300  can be implemented in a generalized client-server computing environment, thereby allowing sender  100  and recipient  200  to access content hosted by server  300 . In some embodiments server  300  comprises a single computing device, while in other embodiments server  300  comprises a geographically distributed network of tens, hundreds, thousands, or more enterprise class servers capable of hosting content accessed by an even larger number of content senders and recipients. 
     Still referring to the example embodiment illustrated in  FIG. 1 , content sender  100  and content recipient  200  each include a processor  110 ,  210 ; a memory  120 ,  220 ; an operating system  140 ,  240 ; a communications module  150 ,  250 ; a content browser  160 ,  260 ; and a geolocation module  170 ,  270 . As can be further seen, a bus and/or interconnect  180 ,  280  is also provided to allow for inter- and intra-device communications using, for example, communications module  150 ,  250 . Content sender  100  and content recipient  200  optionally include, or are coupled to, appropriate peripheral hardware components, such as a display, a textual input device, and/or a pointer-based input device. Content sender  100  and content recipient  200  are connected to a network  400  to allow for communications with each other, as well as with other resources and/or devices, such as networked server  300 . Network  400  may be a local area network (such as a home-based or office network), a wide area network (such as the Internet), or a combination of such networks, whether public, private, or both. In some cases access to resources on a given network or computing system may require credentials such as usernames, passwords, and/or any other suitable security mechanism. Other componentry and functionality not reflected in the illustrations will be apparent in light of this disclosure, and it will therefore be appreciated that the claimed invention is not intended to be limited to any particular hardware configuration. Thus in other embodiments content sender  100  and content recipient  200  may comprise additional or alternative subcomponents as compared to those illustrated in  FIG. 1 . 
     Processors  110 ,  210  can be any suitable processors, and may include one or more coprocessors or controllers, such as an audio processor or a graphics processing unit, to assist in control and processing operations of content sender  100  and content recipient  200 . Memory  120 ,  220  can be implemented using any suitable type of digital storage, such as one or more of a disk drive, a universal serial bus drive, flash memory and/or random access memory. Operating systems  140 ,  240  may comprise any suitable operating system, such as Google Android (Google Inc., Mountain View, Calif.), Microsoft Windows (Microsoft Corp., Redmond, Wash.), or Apple OS X (Apple Inc., Cupertino, Calif.). As will be appreciated in light of this disclosure, the techniques provided herein can be implemented without regard to the particular operating system provided in conjunction with content sender  100  and content recipient  200 , and therefore may also be implemented using any suitable existing or subsequently-developed platform. Communications modules  150 ,  250  can be any appropriate network chip or chipset which allows for wired and/or wireless connection to network  400  or other peripheral resources, thereby enabling content sender  100  and content recipient  200  to communicate with other local and/or remote computer systems, servers, peripheral hardware devices, or resources. In certain embodiments communications with networked server  300  conform to the hypertext transfer protocol (HTTP). 
     Geolocation modules  170 ,  270  can be any suitable combination of hardware and/or software capable of estimating a physical location of the content sender  100  or content recipient  200 . For example, in certain embodiments at least one of geolocation modules  170 ,  270  comprises a global positioning system (GPS) antenna that is configured to work in conjunction with software that is capable of converting GPS signals into an estimated geographic location. In other embodiments at least one of geolocation modules  170 ,  270  comprises software configured to estimate a physical location based on an Internet Protocol (IP) address or other network parameter that is assigned to a particular computing device. In still other embodiments at least one of geolocation modules  170 ,  270  comprises an antenna that is configured to receive network data from multiple wireless access points and software that is configured to use a triangulation algorithm to estimate a physical location based on factors such as observed signal strength and directionality. For example, such an antenna may be configured to receive wireless and/or cellular data signals. 
     Content browsers  160 ,  260  can be used to facilitate the retrieval and rendering of content by content sender  100  and content recipient  200 . Content that is to be browsed can be identified by a network address that is input by a user or that is selected from previously rendered content in the form of a hyperlink. Content browsers  160 ,  260  can be configured to render content stored according to a wide variety of file formats and protocols. In certain embodiments at least one of content browsers  160 ,  260  comprises a software application selected from a web browser, an electronic mail reader, or a newsreader. Other types of software applications can be used to retrieve and render content in other embodiments. Examples of commercially-available content browsers include Google Chrome (Google Inc., Mountain View, Calif.), Internet Explorer (Microsoft Corp., Redmond, Wash.), Microsoft Outlook (Microsoft Corp., Redmond, Wash.), Mozilla Thunderbird (Mozilla Foundation, Mountain View, Calif.), Opera Mail (Opera Software, Oslo, Norway), and Adobe Acrobat (Adobe Systems Incorporated, San Jose, Calif.). It will be appreciated that the embodiments disclosed herein are configured to work with a wide variety of existing and subsequently-developed content browsers. 
     The functionality provided by content browsers  160 ,  260  can be extended through the use of plugins, extensions, add-ons, modules or other such “active content” that is configured to provide specific functionality. For example, connection management modules  162 ,  262  can be configured to establish and maintain an open communication channel between a client (such as content sender  100  or content recipient  200 ) and a server (such as networked server  300 ). Such functionality can be provided according to a variety of techniques. For example, in one embodiment a content recipient connection management module  262  comprises a WebSocket programming element configured to establish a persistent open communication channel between content recipient  200  and networked server  300 . This enables server  300  to “push” content to content browser  260  without being solicited for such content by content recipient  200 . Likewise, a content sender connection management module  162  can be understood as comprising a WebSocket programming element configured to establish a persistent open communication channel between content sender  100  and networked server  300 . This enables content sender  100  to push information to server  300  which can, in turn, be distributed to one or more content recipients  200 , as disclosed herein. In general, a WebSocket plugin can be understood as providing a persistent open communication channel between a server and a client. While the WebSocket protocol constitutes one way of providing such communications, any of a variety of other suitable existing or subsequently-developed techniques for pushing unsolicited content between clients and servers, including the use of client-side timers, can be implemented in other embodiments. 
     Still referring to the example embodiment of  FIG. 1 , content browsers  160 ,  260  each optionally include a user interface module  164 ,  264  that can be configured to receive user input that manipulates how content is shared between content sender  100  and content recipient  200 . For example, a content sender user interface module  164  can be configured to provide a user interface element, such as a button or a switch, that can be used to activate content sharing with identified content recipients. Content sender user interface module  164  can also be configured to provide access to configuration settings which can be used to manipulate, for example, which users receive shared content. Likewise, a content recipient user interface module  264  can be configured to provide a user interface element, such as a button or a switch, that can be used to indicate that shared content should be automatically broadcast from server  300  to content recipient  200 . Content recipient user interface module  264  can also be configured to provide access to configuration settings which can be used to manipulate, for example, how received content is displayed (for instance, it could be automatically rendered by content browser  260 , or it could simply be announced via a system tray notification). Other user interface functionality can be provided by user interface modules  164 ,  264  in other embodiments. 
     The embodiments disclosed herein can be implemented in various forms of hardware, software, firmware, and/or special purpose processors. For example, in one embodiment a non-transitory computer readable medium has instructions encoded thereon that, when executed by one or more processors, cause one or more of the real-time content sharing methodologies disclosed herein to be implemented. The instructions can be encoded using one or more suitable programming languages, such as C, C++, object-oriented C, JavaScript, Visual Basic .NET, BASIC, or alternatively, using custom or proprietary instruction sets. Such instructions can be provided in the form of one or more computer software applications and/or applets that are tangibly embodied on a memory device, and that can be executed by a computer having any suitable architecture. In one embodiment the system can be hosted on a given website and implemented using JavaScript or another suitable browser-based technology. 
     The functionalities disclosed herein can optionally be incorporated into software applications other than those specifically configured for the delivery and consumption of rendered content. For example, a word processing or desktop publishing application may include a content sharing module configured to receive content items shared in real-time from other collaborating users. As a result, the computer software applications disclosed herein may include a number of different modules, sub-modules, or other components of distinct functionality that can provide information to, or receive information from, still other components and/or services. These modules can be used, for example, to communicate with input and/or output devices such as a pointer device, a display screen, a touch sensitive surface, a printer, and/or any other suitable input/output device. Other components and functionality not reflected in the illustrations will be apparent in light of this disclosure, and it will be appreciated that the embodiments disclosed herein are not intended to be limited to any particular hardware and/or software configuration. Thus in other embodiments the configuration of the computer system illustrated in  FIG. 1  may comprise additional, fewer, or alternative components. 
     The aforementioned non-transitory computer readable medium may be any suitable medium for storing digital information, such as a hard drive, a server, a flash memory, and/or random access memory. In alternative embodiments the computer and/or modules disclosed herein can be implemented with hardware, including gate level logic such as a field-programmable gate array (FPGA), or alternatively, a purpose-built semiconductor such as an application-specific integrated circuit (ASIC). Still other embodiments may be implemented with a microcontroller having a number of input/output ports for receiving and outputting data, and a number of embedded routines for carrying out the various functionalities disclosed herein. It will be apparent that any suitable combination of hardware, software, and firmware can be used, and that the various embodiments disclosed herein are not intended to be limited to any particular system architecture. 
     Data Pipelines and Methodology 
       FIG. 2  is a data flow diagram schematically illustrating example data flows that occur when a shared content item  10  is broadcast from content sender  100  to a plurality of content recipients  200   a ,  200   b  via networked server  300 . In this example embodiment content sender  100  and first content recipient  200   a  are illustrated as being associated with a tablet computer, while second content recipient  200   b  is illustrated as being associated with a desktop computer that is coupled to a projector. This arrangement is particularly likely to arise where content sender  100  and first content recipient  200   a  are audience members attending a presentation given by second content recipient  200   b . In this context, a particular attendee (content sender  100 ) can be understood as seeking to share content item  10  with other audience members (content recipient  200   a ) and the presenter (content recipient  200   b ). However, this represents only one particular application, and thus it will be appreciated that the specific user-hardware associations illustrated in  FIG. 2  are provided by way of example only. In alternative embodiments content senders and recipients may be associated with any suitable computing device. In general, certain of the techniques disclosed herein enable content sender to broadcast the shared content in real-time to one or more content recipients. 
     Content sender  100  may have access to a variety of different content items, including content items obtained from networked server  300 , content items obtained from other content sources, and locally generated content items. However, content sender  100  may wish to share only certain of these content items. Thus a distinction can be drawn between one or more shared content items  10  and one or more private content items  14  associated with content sender  100 . To this end, in certain embodiments content sender  100  may open a content browser window  12  that is specifically configured for content sharing, such that only those content items rendered in the designated content browser window  12  will be shared with identified content recipients  200   a ,  200   b  upon activation of content sharing functionality. This provides content sender  100  with additional control over which content items are shared, which is in contrast to existing remote desktop applications which are configured to share an entire desktop environment. 
     Content sender  100  can invoke content sharing by, for example, selecting a user interface element. In embodiments implemented using a touchscreen interface, content sender  100  can invoke content sharing by performing a designated gesture to which user interface module  164  is configured to be responsive. For instance, in one embodiment performing an upward swipe gesture A, as illustrated in  FIG. 2 , can cause content items  10  contained within content browser window  12  to be shared with identified content recipients  200   a ,  200   b . In certain embodiments the location of the swipe gesture can determine which content items are shared. For example, where multiple browser windows are open, performing the swipe gesture over a particular browser window will cause content items contained within that specific browser window to be shared. In an alternative embodiment, user interface module  164  can be configured to share all displayed content items in response to the swipe gesture. In some cases invoking content sharing requires at least two user inputs (an activate sharing gesture and a content selection gesture), while in other cases invoking content sharing requires only one user input (a content selection gesture, such as an upward swipe over the content to be shared). In general, using a touchscreen-based gesture to invoke content sharing makes such implementations particularly well-suited for use with the portable devices which are likely to be used in collaborative working environments such as at meetings and presentations. 
     As illustrated in  FIGS. 1 and 2 , upon detecting that content sharing has been invoked, content browser  160  can be configured to send a shared content reference  10 ′ to networked server  300 . In particular, where the shared content is hosted by networked server  300 , it is unnecessary for the entirety of such content to be returned from content sender  100  to networked server  300 . Rather, sending only reference  10 ′ reduces required bandwidth, decreases latency, and enables networked server  300  to automatically locate and push the content item to the one or more identified content recipients  200   a ,  200   b . However, it will be appreciated that where content sender  100  wishes to broadcast content which is not hosted by networked server  300  or some other networked resource, the shared content item itself can be sent from content sender  100  to networked server  300 . 
     In general, content recipients  200  can be identified in a number of ways. In one implementation content sender  100  can open a communication channel to which interested content recipients  200  can subscribe. For example, open communication channels can be advertised at a web portal that is accessible to potential content recipients. Selecting and subscribing to an available channel allows a user to receive content shared by the content sender that established the channel. In particular, a WebSocket communication channel can be established between networked server  300  and each subscribing content recipient  200 . When content sender  100  invokes content sharing, such as by performing the aforementioned upward swipe gesture A, the identified shared content item  10  can be transmitted from server  300  to content recipient  200  via the previously established communication channel. This configuration allows content senders to send content to recipients with a gesture that physically represents swiping the content off their device to the recipient&#39;s device. 
     Additionally or alternatively, content recipients  200  can be identified using geolocation functionality provided by, for example, geolocation modules  170 ,  270 . For example, users within a designated physical region, such as within a certain proximity to a content sender, can be identified as potential content recipients. In such case, an open communication channel with each of the identified potential content recipients can be established automatically. In alternative embodiment, each of the identified potential content recipients can be presented to the content sender for approval as authorized content recipients. Just as in the case of the aforementioned subscription model, any suitable communication protocol can be used to establish and maintain an appropriate open communication channel between networked server  300  and identified content recipients  200 . Such an arrangement can effectively establish an automatic subscription to shared content based on location, and can be useful where all users within a particular meeting room or other location should receive content which content sender  100  shares. In certain embodiments a combined subscription and geolocation model can be used to identify content recipients  200 , thereby allowing content sharing amongst collaborators based on either or both criterion. 
     Upon receipt of shared content reference  10 ′, or in some cases upon receipt of the shared content item itself, networked server  300  can be configured to push the shared content to one or more content recipients. This can be accomplished via an open communication channel between server  300  and one or more content recipients  200 . In some cases, a WebSocket programming element is used to establish such a communication channel, although other techniques such as the use of client-side timers, can be used in other embodiments. Implementing client-server communication using browser-based tools eliminates any requirement that content senders  100  or content recipients  200  install dedicated software before sharing or receiving content. Instead, a user can simply navigate to and retrieve a particular webpage that includes active content in the form of programming elements that, when executed, establish the appropriate communication channels. That is, in such embodiments the disclosed content sharing can be understood as a browser-to-browser interaction that does not rely on a native or dedicated content sharing application installed on any particular client. Furthermore, while an open communication channel is described here as existing between networked server  300  and one or more content recipients  200 , it will be appreciated that such a channel may also be provided between content sender  100  and networked server  300  as well. Such a configuration allows content recipients to respond to received content by sending other content back to content sender, thereby effectively reversing the roles of content sender and content recipient. 
     For example, from the perspective of content recipient  200   a , received content item  20   a  can be configured to appear in a browser window  22   a  associated with content sharing operations. This allows the received content item  20   a  to appear adjacent to one or more private content items  24   a  available to content recipient  200   a . In an alternative configuration, such as from the perspective of content recipient  200   b , received content item  20   b  can be configured to be displayed in a full-screen mode, such as may be particularly appropriate in the context of a projected display. Thus in some cases content can be represented differently depending on the type of display available to a particular content recipient  200   a ,  200   b . Other less intrusive techniques for providing notification that shared content has been received can be implemented in other embodiments, such as via display of a system tray notification message and/or icon. In any case, in such embodiments content recipient  200  can be presented with a received content item  20  immediately after content sender  100  elects to share such item, thereby providing a real-time content sharing user experience. If content recipient  200  no longer wishes to receive shared content from content sender  100 , simply closing the content browser window or other application supporting the open communication channel will cause such content sharing to end. 
       FIGS. 3A and 3B  are flowcharts illustrating example methods of broadcasting and receiving content from the perspective of a content sender and a content recipient, respectively.  FIG. 4  is a flowchart illustrating an example method of using a networked server to manage broadcast communications between a content sender and a content recipient. As can be seen, the disclosed methodologies include a number of phases and sub-processes, the sequence of which may vary from one embodiment to the next. However, when considered in the aggregate, these phases and sub-processes form a complete real-time content sharing functionality that is responsive to user commands in accordance with certain of the embodiments disclosed herein. This methodology and its variations can be implemented, for example, using the system architecture illustrated in  FIG. 1  and described herein, although other systems and architectures can be used in other embodiments, as will be apparent in light of this disclosure. To this end, the correlation of the various functions illustrated in  FIGS. 3A, 3B, and 4  to the specific components, systems, and sub-modules illustrated in  FIG. 1  is not intended to imply any structural or use limitations. Rather other embodiments may include, for example, varying degrees of integration where multiple functionalities are effectively performed by one user, system, component, or sub-module. For example, in certain embodiments one or more of the content browsers  160 ,  260  may include the geolocation functionality described herein as being associated with respective geolocation modules  170 ,  270 . Thus other embodiments may have fewer or more components or systems depending on the granularity of a particular implementation. Numerous variations and alternative configurations will therefore be apparent in light of this disclosure. 
     As illustrated in  FIG. 3A , a method  1000  for broadcasting content from the perspective of content sender  100  commences with content sender  100  opening content browser window. See reference numeral  1100  in  FIG. 3A . In response to input received from content sender  100 , content sharing can be activated and a content sharing channel can be opened. See reference numeral  1200  in  FIG. 3A . As disclosed herein, in certain embodiments such user input may comprise multiple user actions, such as an activate sharing gesture followed by a content selection gesture. In other embodiments such user input may comprise a single user action, such as an upward swipe over the particular content which is to be shared. Once a content sharing channel is opened, content sender  100  can select the content items which are to be shared. See reference numeral  1400  in  FIG. 3A . In certain embodiments the same user interaction can be used to both activate content sharing and select the content items which are to be shared. One example of such a user interaction is an upward swipe over the content to be shared, as performed on a touchscreen display. Content sender  100  may optionally select certain content recipients  200  that are authorized to receive shared content item. See reference numeral  1500  in  FIG. 3A . In such case the selection of authorized content recipients may be made (a) from a list of potential content recipients who have requested to subscribe to content broadcasts from a particular content sender, (b) from a list of potential content recipients within a certain physical region, such as within a certain physical proximity to content sender  100 , and/or (c) from some other subset of potential content recipients. 
     As illustrated in  FIG. 3B , a method  2000  for receiving content from the perspective of content recipient  200  commences with content recipient  200  opening a content browser window. See reference numeral  2100  in  FIG. 3B . Content recipient  200  may then select a content sharing channel opened by content sender  100 . See reference numeral  2200  in  FIG. 3B . Such a selection can be made by, for example, pointing the content browser to a particular content sharing portal configured to provide browser-based functionality for establishing an open communication channel between content recipient  200  and content server  300 . In other embodiments, the aforementioned web portal can be configured to provide content recipient  200  with a list of available communication channels opened by one or more content senders  100 . In some cases the content sharing channels made available to content recipient  200  depend on the geographic location of content recipient  200 , as disclosed herein. In any case, once content recipient  200  establishes an open communication channel with content server  300 , shared content can be received. See reference numeral  2300  in  FIG. 3B . 
     As illustrated in  FIG. 4 , a method  3000  for using networked server  300  to manage broadcast communications between content sender  100  and content recipient  200  commences with networked server  300  establishing a connection with content sender  100 . See reference numeral  3100  in  FIG. 4 . Such a connection may occur as a result of content sender  100  requesting content and/or functionality from server  300 , for example, by retrieving a webpage containing active content from server  300 . This connection may comprise, for example, an open communication channel that allows content sender  100  to “push” content to networked server  300  for subsequent broadcast. One or more content recipients  200  can be identified. See reference numeral  3200  in  FIG. 4 . For example, networked server  300  can be configured to broadcast the availability of one or more open content sharing channels established by one or more content senders  100 . See reference numeral  3210  in  FIG. 4 . This can be accomplished, for example, via a web portal listing open content sharing channels. Content recipients  200  can be identified based on receipt of a request to subscribe to an open content sharing channel. See reference numeral  3212  in  FIG. 4 . Additionally or alternatively, content recipients  200  can be identified based on geolocation, such as based on being within a designated physical region, such as within a certain physical proximity to content sender  100 . See reference numeral  3220  in  FIG. 4 . 
     Regardless of how the one or more content recipients  200  are identified, an open communication channel can be established between networked server  300  and the one or more content recipients  200 . See reference numeral  3300  in  FIG. 4 . Such a connection can be established, for example, using functionality provided by a browser plugin transmitted from networked server  300  to content recipient  200 . This advantageously allows such a connection to be established based simply on an initial client-server interaction between content recipient  200  and server  300 . Once such an open communication channel is established, server  300  can receive references to shared content from content sender  100 , as well as actual shared content items. See reference numeral  3400  in  FIG. 4 . The shared content items can then be pushed to an identified content recipient  200  via the respective open communication channel for that recipient. See reference numeral  3500  in  FIG. 4 . The result is real-time content sharing between a browser associated with content sender  100  and a browser associated with content recipient  200 . Because the content is shared on a browser-to-browser basis, no native or dedicated content sharing applications are required to be installed by either content sender  100  or content recipient  200 . Among other advantages, this encourages impromptu multiuser collaboration based simply on use of a common web portal. 
     CONCLUSION 
     Numerous variations and configurations will be apparent in light of this disclosure. For example, one embodiment provides a method for sharing content that comprises establishing first and second open communication channels between a content server and respective first and second client computing devices. The method further comprises, in response to a user interaction detected at the first client computing device, receiving, at the content server via the first open communication channel, data corresponding to shared content that is to be broadcast to the second client computing device. The method further comprises broadcasting the shared content from the content server to the second client computing device via the second open communication channel. Broadcasting causes the shared content to be displayed at the second client computing device without user interaction with the second client computing device. In some cases the first open communication channel is established in response to the first client computing device executing a browser plugin retrieved from the content server. In some cases the second open communication channel is established in response to the second client computing device executing a browser plugin retrieved from the content server. In some cases at least one of the first and second open communication channels provides duplex communications according to a WebSocket protocol. In some cases the second open communication channel is capable of obtaining the shared content from the content server based on a client-side timer running on the second client computing device. In some cases the user interaction is a swiping gesture performed on a touch sensitive surface that forms part of the first client computing device. In some cases the data corresponding to the shared content comprises a network address associated with a content item stored in a content repository hosted by the content server. In some cases the data corresponding to the shared content comprises the shared content itself. In some cases (a) the second open communication channel is established is response to the second client computing device executing a browser plugin in a content browser running on the second client computing device; and (b) broadcasting the shared content causes the shared content to be displayed in the content browser. 
     Another example embodiment provides a system for sharing content that comprises a networked content server that is configured to receive, from a first client device, data corresponding to shared content, and that is configured to broadcast the shared content to a plurality of second client devices in response to such receipt. The shared content is broadcast to the plurality of second client devices via a respective plurality of open communication channels. The system further comprises a content repository hosted by the networked content server, the content repository having the shared content stored therein. The system further comprises active content that forms part of a webpage stored within the content repository, the active content configured to cause a web browser running on the first client device to transmit the data corresponding to the shared content to the networked content server in response to detection of a user interface interaction with the shared content. In some cases the system further comprises a geolocation module configured to estimate a physical location of a plurality of distributed client devices, wherein (a) the plurality of second client devices are included in the plurality of distributed client devices; and (b) the plurality of second client devices are estimated to be physically located within a target audience region. In some cases the user interface interaction with the shared content is a swipe gesture performed on a touch sensitive surface displaying the shared content. In some cases the data corresponding to the shared content comprises a storage address associated with the content repository. In some cases the active content is further configured to establish a particular open communication channel between the networked content server and a corresponding particular second client device, the particular open communication channel corresponding to a WebSocket communication protocol. In some cases the networked content server is further configured to serve the webpage to the first client device and at least one of the plurality of second client devices before receiving the data corresponding to the shared content. 
     Another example embodiment provides a non-transitory computer readable medium having instructions encoded thereon that, when executed by one or more processors cause a content sharing process to be carried out. The process comprises establishing a first open communication channel between a content server and a first client device. The process further comprises establishing a second open communication channel between the content server and a second client device. The process further comprises, in response to a user interaction detected at the first client device, receiving, at the content server via the first open communication channel, data corresponding to shared content that is to be broadcast to the second client device. The process further comprises broadcasting the shared content from the content server to the second client device via the second open communication channel. Broadcasting causes the shared content to be displayed at the second client device without user interaction with the second client device. In some cases (a) the content sharing process further comprises (i) generating a channel listing that includes the first open communication channel, and (ii) identifying the second client device based on a selection of the first open communication channel that is received from the second client device; and (b) the second open communication channel is established in response to identifying the second client device. In some cases the user interaction is a swiping gesture performed on a touch sensitive surface that forms part of the first client device. In some cases (a) the content sharing process further comprises identifying the second client device based on a physical location of the second client device; and (b) the second open communication channel is established in response to identifying the second client device. In some cases (a) the content sharing process further comprises identifying the second client device based on a physical proximity of the first and second client devices; and (b) the second open communication channel is established in response to identifying the second client device. 
     The foregoing description of selected embodiments has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form described. Many modifications and variations are possible in light of this disclosure. Therefore it is intended that the scope of the invention be limited not by this detailed description, but rather by the claims appended hereto.