Simultaneous projected presentation of client browser display6760045Abstract A system and method for displaying content accessed by a client to an audience via a projector is disclosed, wherein the content includes a client version suitable for access by clients and a projector version suitable for display by a projector. The system includes a server coupled to the network capable of communication with the clients via the network and at least one projector capable of accessing the projector version of the content communicatively coupled to the server. Upon receiving a request from a client that one or more projectors display content accessed by the client, that is "follow" the display of content by that client, the server thereafter monitors the browsing activity of the client, detecting when the client is accessing content via the network. When the client accesses the client version of the content, the server notifies the following projector(s) to access the projector component of the content via the network so the content may be displayed by the projector. Claims What is claimed is: Description FIELD OF THE INVENTION
Client 2_StartPage.asp
<!-- #include file + "common.asp" -->
<%
FollowMe Projector1
ShowPage
%>
<HTML>
.
</HTML>
and
Client_3_StartPage.asp
<!-- #include file + "common.asp" -->
<%
FollowMe Projector2
FollowMe Projector3
ShowPage
%>
<HTML>
.
</HTML>
which cause "Projector 1" 114 to follow "Client 2" 104 while "Projector 2" 116 and "Projector 3" 118 follow "Client 3" 106 when those clients navigate to their respective start pages "Client.sub.-- 2_StartPage.asp" and "Client.sub.-- 3_StartPage.asp." In exemplary embodiments, command scripts may further include subroutines for updating the list of projectors thereby identifying the projector or projectors 114, 116 & 118 to follow specific ones of clients 102, 104, 106 & 108, and for notifying the projectors 114, 116 & 118 following clients 102, 104, 106 & 108 to display the content accessed by the clients being followed. For instance, the exemplary command scripts set forth above include subroutines labeled "FollowMe" and "ShowPage" for performing these functions. Because projectors 112, 114 & 116 may display the same content as the clients 102, 104, 106 & 108 they follow, it is desirable to prevent the command script from servicing calls from projectors 112, 114 & 116 as clients. In this manner, a possible continuous loop wherein a projector continually commands itself to display the content page it is already displaying may be avoided. For example, the subroutines "FollowMe" and "ShowPage" may use the VBScript command string "Request.ServerVariables("REMOTE_HOST")" for determining which device (client or projector) is calling them. FIG. 4 illustrates an exemplary method implemented by a subroutine of the command script (e.g., in the example above, the "FollowMe" subroutine) for assigning projectors to follow specific clients by updating the list of projectors. Such subroutines are utilized when the command script is embedded in one or more of the content pages (e.g., in the HTML) accessed by the clients so that the list of projectors is updated programmatically. The method 400 first determines if the device or machine requesting the assignment (the "calling machine") is a projector or client device thereby preventing the command script from servicing a call from a projector. The method 400 is initiated when the command script receives a call from a calling machine for a following projector 402. The identity of the calling machine is next looked up on the command script's list of projectors for determining if the calling machine is a projector or client 404. If the calling machine is determined to be a projector 406, the call is ignored and the list of projectors is not updated 408. In this manner, the command script is prevented from servicing a call from a projector. If, however, the calling machine is determined not to be a projector (i.e., the calling machine is a client), the list is updated by assigning the requested projector to follow the calling machine (i.e., the client) 410. FIG. 5 illustrates an exemplary method implemented by a subroutine of the command script (e.g., in the example above, the "ShowPage" subroutine) for notifying following projectors to display the content accessed by the clients being followed. This method 500, like the method 400 shown in FIG. 4, also first determines if the device or machine requesting the assignment (the "calling machine") is a projector or client device for preventing the command script from servicing a call from a projector. The method 500 is initiated when the command script receives a call from a calling machine for a following projector to access and display content 502. The identity of the calling machine is next looked up on the command script's list of projectors for determining if the calling machine is a projector or client 504. If the calling machine is determined to be a projector 506, the call is ignored and no action is taken 508. In this manner, the command script is prevented from servicing a call from a projector. If, however, the calling machine is not a projector, the calling machine is determined to be a client and a second determination is made whether the calling machine is being followed by a projector or projectors 510. If it is determined that the calling machine is not being followed by a projector, no action is taken and the call is ignored 512. If, on the other hand, it is determined that the calling machine is being followed by a projector or projectors, each projector following the client is notified to navigate to and display the projector version of the content accessed by the calling machine (client) 514. In an exemplary embodiment, wherein the scripting language used is VBScript and the command script includes the subroutine "ShowPage," every content page to be displayed by a projector (i.e., the projector version of the content page) may include a script such as:
<!-- #include file = "common.asp" -->
<%
ShowPage
%>
wherein the file "common.asp" contains the "ShowPage" subroutine definition and the "#include" directive is used for eliminating duplication. In this embodiment, the "ShowPage" subroutine invokes the interface of the sender routine for notifying the associated following projector that it should navigate to and display the content accessed by the client or clients it is following. The "ShowPage" subroutine may utilize the VBScript command string "Request.ServerVariables("URL")" for determining from what page it is being called. Referring now to FIGS. 6A and 6B, operation of an exemplary embodiment of the present invention with respect to one client is described. In FIG. 6A, operation of the present invention for the display of content such as a Web page or the like that does not contain multiple frames is described. As illustrated, a client 602 operating browser 604 navigates to a control page (e.g., "control_page.asp"). This control page (e.g., "control_page.asp") has encoded an indication to the server 606 that one or more particular projectors, for example, projector 608 should follow the client 602. In response to this encoded indication, server 606 stores the address, (e.g., the Internet Protocol (IP) address) of the client 602. Preferably, this address is obtained from the request of the client browser 604 for server 606 to deliver the control page (e.g., "control_page.asp") to client 602, designating the client 602 as "followed." Client 602, having been designated as "followed" by server 606, next directs browser 604 to navigate to a content page. The client 602 may load a client version of this page, in this example, e.g., "client_content_page.asp." Receiver 610 of server 606 recognizes that followed client 602 is loading a new content page and informs projector notifier 612. In response to such notification, projector notifier 612 opens a socket to projector 608 and sends a message directing the projector 608 to load the projector version of the content page accessed by the client 602. Receiver 614 receives the message from projector notifier 612, and, parsing the uniform resource locator (URL) of the new content page, causes the projector's browser 616 to load the content page accessed by the client 602. The projector version of the content page (e.g., "projector_content_page.asp") is then loaded by the projector's browser from server 606 for display by the projector 608. In FIG. 6B, operation of the present invention for the display of content such as a Web page, or the like containing multiple frames is described. When browsers 604 or 616 load a content page, such as a Web page identified by a URL, it is generally loaded into the browser's main window. Thus, when the content being accessed by client 602 includes framesets, it is desirable that additional information be provided to the browser 608 so that the content may be loaded into the correct frame within the browser window. In accordance with an exemplary embodiment of the present invention, this may be accomplished by embedding a frame name within the file name (e.g., URL) of the content to be loaded in each frame. For example, assuming a frameset defining two frames named "left" and "right", respectively, content, for example an introduction to the content page, to be loaded within the right frame may be identified by the file name "right introduction.asp," while content, for example, a table of contents, to be loaded into the left frame may be identified by the file name "left_tableofcontents.asp." In this manner, the file name may be parsed (e.g., by the command script subroutine "ShowPage") so as to command the projector browser 616 to load the content correctly. Similarly, if it was desired to load a content page in a topmost frame of the browser display, a frame name such as "topmost" may be added to the file name. Thus, a welcome loaded into the topmost frame of the browser display may have a file name such as "topmost_welcome.asp" or the like. As illustrated, a client 602 operating browser 604 navigates to a control page (e.g., "control_page.asp"). This control page (e.g., "control_page.asp") has encoded an indication to the server 606 that one or more particular projectors, for example, projector 608 should follow the client 602. In response to this encoded indication, server 606 stores the address, (e.g., the Internet Protocol (IP) address) of the client 602. Preferably, this address is obtained from the request of the client browser 604 for server 606 to deliver the control page (e.g., "control_page.asp") to client 602, designating the client 602 as "followed." Client 602, having been designated as "followed" by server 606, next directs browser 604 to navigate to a new content page, in this example a page containing a frameset defining two frames named respectively "left" and "right." The client 602 may load a client version of the frameset of this content page (e.g., "client_frameset_start.asp"). Receiver 610 of server 606 recognizes that the followed client 602 is loading a new content page and informs projector notifier 612. In response to such notification, projector notifier 612 opens a socket to projector 608 and sends a message directing projector 608 to load the projector version of the client page, being the frameset. Receiver 614 receives the message from projector notifier 612, and, parsing the uniform resource locator (URL) of the new content page, causes projector browser 616 to load the frameset (e.g., "projector_frameset_start.asp"), topmost, which frameset is loaded to projector browser 616 from server 606. Next, the client browser 604 loads the appropriate source HTML (Hypertext Markup Language) page for one of its frames from server 606, in this case the "left" page (e.g., "client_left_tableofcontents.asp"). Receiver 610 of server 606 detects that the followed client 602 is loading a page and informs projector notifier 612. In response, the projector notifier 612 opens a socket to projector 608 and sends a message directing the projector 608 to load the projector version of the client page. Receiver 614 of projector 608 receives this message and, parsing the URL for the page, causes the projector browser 616 to load the projector version of the HTML page, in this case the "left" page (e.g., "projector_left_tableofcontents.asp"), into the correct frame. In response, projector browser 616 loads the page into the correct frame. In a similar fashion, loading of the HTML page for the "right" frame (e.g., "client right_introduction.asp") from web server 606 by browser 604 of client 602 will cause server 606 to notify projector 608 via projector notifier 612 that projector browser 616 should load the projector version of the HTML page for the "right" frame (e.g., "projector_right introduction.asp") into the correct frame. In this fashion, the entire display of content provided by browser 604 of client 602 may be presented and displayed by projector 608 using server side technology, once client 602 is designated as "followed." Turning again to FIGS. 1A and 1B, in view of the foregoing, it will be evident to those skilled in the art that, once server 112 delivers a control page as described above to one of clients 102, 104, 106 & 108, that client will be designated as "followed" by one or more of projectors 114, 116 & 118, and the display from the followed client 102, 104, 106 & 108 will be rendered by the following projectors 114, 116 & 118. Referring again to FIGS. 6A and 6B, it will be appreciated by those skilled in the art, depending upon different implementations of the present invention, that the control page accessed by a "followed" client 602, or alternately a second control page, may also serve the purpose of indicating to server 606 that projector 608 need no longer follow client 602. In the foregoing embodiment, the user directs the system 600 to follow a client 602 by directing the client's browser 604 to a control page indicating the client 602 is to be followed, and, similarly, the user directs the system 600 to cease following the client 602 by again directing the client's browser 604 to that control page (or alternately a second control page) that indicates the client 602 is no longer to be followed. In embodiments of the invention, access of a control page by a second or different client from client 602 may cause the system 600 to designate that client as the new "followed" client to be followed by projector 608. Thus, client 602 is no longer followed. In such an embodiment, the client to be followed is controlled simply by directing the browser 604 of that client 602 to the address of the control page. In the case where projector 608 is following a given client 602 and a second client accesses the control page, embodiments of the present invention may permit the simultaneous display of a plurality of content pages, each pertaining to one of a plurality of "followed" clients, as follows. It will be recalled that when client browser 604 requests server 606 to display a control page, the address (e.g., IP address) of the client 602 is noted by the server 606. In this manner, the server 606 is able to recognize requests for pages by the client browser 602 from server 606 as coming from a "followed" client. In embodiments of the invention permitting the simultaneous display of pages from a plurality of clients 602, the projector browser 616 may be configured so that pages from different followed clients, indicated by their different and unique addresses (e.g., IP addresses), are rendered in different areas of the projector's display such that each area is dedicated to rendering the display of one "followed" client 602. The allocation of a number of discrete screen areas in a display of content, whether by windowing, by tiling or by other presentation methods, is well known and may be practiced without undue experimentation by those of ordinary skill in the art. The present invention may be implemented as programs of instructions resident in the memory of one or more information appliances configured generally as described in FIG. 7. For example, in an exemplary embodiment, elements of the present invention may be implemented as an ancillary program of instructions or "plug-in" for a "browser" or "server" application employed by the information appliance. Until required by the information appliance, the set of instructions may be stored in another readable memory device, for example in a hard disk drive or in a removable memory such as an optical disk for utilization in a CD-ROM drive or a DVD drive, a floppy disk for utilization in a floppy disk drive, a personal computer memory card for utilization in a personal computer card slot, or the like. Further, the program of instructions can be stored in the memory of another information appliance and transmitted over a local area network or a wide area network, such as the Internet, an Intranet, or the like, when desired by the user. Additionally, the instructions may be transmitted over a network in the form of an applet that is interpreted or compiled after transmission to the information appliance rather than prior to transmission. One skilled in the art would appreciate that the physical storage of the sets of instructions or applets physically changes the medium upon which it is stored electrically, magnetically, chemically, physically, optically or holographically so that the medium carries computer readable information. Referring now to FIG. 7, a hardware system in accordance with the present invention is shown. The hardware system 700 shown in FIG. 7 is generally representative of the hardware architecture of an information appliance suitable for implementing the present invention. In one embodiment, the hardware system 700 may comprise a convergence system, PC/TV system or the like, so named because such systems represent the convergence of computer and consumer electronics into a single system. Alternately, the hardware system, or portions thereof, may be part of an information appliance providing a specific media. Examples of such appliances include televisions, VCR devices, DVD devices, Web TV devices, satellite receivers, cable boxes and the like. The hardware system 700 is controlled by a central processing system 702. The central processing system 702 includes a central processing unit such as a microprocessor or microcontroller for executing programs, performing data manipulations and controlling the tasks of the hardware system 700. Communication with the central processor 702 is implemented through a system bus 710 for transferring information among the components of the hardware system 700. The bus 710 may include a data channel for facilitating information transfer between storage and other peripheral components of the hardware system. The bus 710 further provides the set of signals required for communication with the central processing system 702 including a data bus, address bus, and control bus. The bus 710 may comprise any state of the art bus architecture according to promulgated standards, for example industry standard architecture (ISA), extended industry standard architecture (EISA), Micro Channel Architecture (MCA), peripheral component interconnect (PCI) local bus, standards promulgated by the Institute of Electrical and Electronics Engineers (IEEE) including IEEE 488 general-purpose interface bus (GPIB), IEEE 696/S-100, and so on. Other components of the hardware system 700 include main memory 704 and auxiliary memory 706. The hardware system 700 may further include an auxiliary processing system (not shown) as required. The main memory 704 provides storage of instructions and data for programs executing on the central processing system 702. The main memory 704 is typically semiconductor-based memory such as dynamic random access memory (DRAM) and/or static random access memory (SRAM). Other semiconductor-based memory types include, for example, synchronous dynamic random access memory (SDRAM), Rambus dynamic random access memory (RDRAM), ferroelectric random access memory (FRAM), and so on. The auxiliary memory 706 provides storage of instructions and data that are loaded into the main memory 704 before execution. The auxiliary memory 706 may include semiconductor-based memory such as read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable read-only memory (EEPROM), or flash memory (block oriented memory similar to EEPROM). The auxiliary memory 706 may also include a variety of non-semiconductor-based memories, including but not limited to magnetic tape, drum, floppy disk, hard disk, optical, laser disk, compact disc read-only memory (CD-ROM), write once compact disc (CD-R), rewritable compact disc (CD-RW), digital versatile disc read-only memory (DVD-ROM), write once DVD (DVD-R), rewritable digital versatile disc (DVD-RAM), etc. Other varieties of memory devices are contemplated as well. The hardware system 700 may optionally include an auxiliary processing system (not shown) which may be an auxiliary processor to manage input/output, an auxiliary processor to perform floating point mathematical operations, a digital signal processor (a special-purpose microprocessor having an architecture suitable for fast execution of signal processing algorithms), a back-end processor (a slave processor subordinate to the main processing system), an additional microprocessor or controller for dual or multiple processor systems, or a coprocessor. It will be recognized that such auxiliary processors may be discrete processors or may be built in to the main processor. The hardware system 700 further includes a display system 712 for connecting to a display device 714, and an input/output (I/O) system 716 for connecting to one or more I/O devices 718, 720, and up to N number of I/O devices 722. The display system 712 may comprise a video display adapter having all of the components for driving the display device, including video memory, buffer, and graphics engine as desired. Video memory may be, for example, video random access memory (VRAM), synchronous graphics random access memory (SGRAM), windows random access memory (WRAM), and the like. The display device 714 may comprise a cathode ray-tube (CRT) type display such as a monitor or television, or may comprise an alternative type of display technology such as a projection-type CRT display, a liquid-crystal display (LCD) overhead projector display, an LCD display, a light-emitting diode (LED) display, a gas or plasma display, an electroluminescent display, a vacuum fluorescent display, a cathodoluminescent (field emission) display, a plasma-addressed liquid crystal (PALC) display, a high gain emissive display (HGED), and so forth. The input/output system 716 may comprise one or more controllers or adapters for providing interface functions between the one or more I/O devices 718-722. For example, the input/output system 716 may comprise a serial port, parallel port, universal serial bus (USB) port, IEEE 1394 serial bus port, infrared port, network adapter, printer adapter, radio-frequency (RF) communications adapter, universal asynchronous receiver-transmitter (UART) port, etc., for interfacing between corresponding I/O devices such as a keyboard, mouse, trackball, touchpad, joystick, trackstick, infrared transducers, printer, modem, RF modem, bar code reader, charge-coupled device (CCD) reader, scanner, compact disc (CD), compact disc read-only memory (CD-ROM), digital versatile disc (DVD), video capture device, TV tuner card, touch screen, stylus, electroacoustic transducer, microphone, speaker, audio amplifier, etc. The input/output system 716 and I/O devices 718-722 may provide or receive analog or digital signals for communication between the hardware system 700 of the present invention and external devices, networks, or information sources. The input/output system 716 and I/O devices 718-722 preferably implement industry promulgated architecture standards, including Ethernet IEEE 802 standards (e.g., IEEE 802.3 for broadband and baseband networks, IEEE 802.3z for Gigabit Ethernet, IEEE 802.4 for token passing bus networks, IEEE 802.5 for token ring networks, IEEE 802.6 for metropolitan area networks, and so on), Fibre Channel, digital subscriber line (DSL), asymmetric digital subscriber line (ASDL), frame relay, asynchronous transfer mode (ATM), integrated digital services network (ISDN), personal communications services (PCS), transmission control protocol/Internet protocol (TCP/IP), serial line Internet protocol/point to point protocol (SLIP/PPP), and so on. It should be appreciated that modification or reconfiguration of the hardware system 700 of FIG. 7 by one having ordinary skill in the art would not depart from the scope or the spirit of the present invention. In exemplary embodiments, the methods disclosed may be implemented as sets of instructions such as software or firmware readable by an information appliance as described in the discussion of FIG. 7. It is understood that the specific order or hierarchies of steps in the methods disclosed are examples of exemplary approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the method can be rearranged while remaining within the scope of the present invention. The attached method claims present elements of the various steps in a sample order, and are not meant to be limited to the specific order or hierarchy presented. It is believed that the system and method of the present invention and many of its attendant advantages will be understood by the foregoing description, and it will be apparent that various changes may be made in the form, construction and arrangement of the components thereof without departing from the scope and spirit of the invention or without sacrificing all of its material advantages, the form herein before described being merely an explanatory embodiment thereof. It is the intention of the following claims to encompass and include such changes.
|
Same subclass Same class Consider this |
||||||||||
