Abstract:
This invention relates to a method for broadcasting the same information from one server ( 101,  FIG.  1 ) to users in multiple internet sessions such that it appears simultaneously on all browser screens ( 102, 103 ).

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    Not Applicable 
       STATEMENT RE: FEDERALLY SPONSORED RESEARCH/DEVELOPMENT 
       [0002]    Not Applicable 
       BACKGROUND 
       [0003]    This invention relates to a method for broadcasting the same information from one server ( 101 ,  FIG. 1 ) to users in multiple internet sessions such that it appears simultaneously on all browser screens ( 102 ,  103 ). 
         [0004]    Certain multi-user internet applications require information to be distributed to users such that such that it appears simultaneously on all browser screens. An example is an online voting application, where the voting time window must be the same for all users, or as close as possible thereto. 
         [0005]    A simple browser-based solution is to use browser-side Javascript code to poll a web server occasionally for new information to display. The simultaneity of information displayed with such a method is limited to the rate at which the browsers poll the servers. 
       BRIEF SUMMARY 
       [0006]    The state of the art is the use of push technologies such as WebSockets to provide a closer to real-time display. It does this by allowing the server to push the information at the appropriate time to all web browsers without waiting to be polled. While closer to achieving simultaneity, it has limitations; first, it requires special application software to be installed on the server and the browsers; second, a multitasking server supporting multiple users can only send a message to one browser at a time, so the simultaneity is inherently limited. 
         [0007]    According to a first aspect of the invention, there is provided a method of sending a message between an Internet connectable server and client, the message to be displayed at a particular time, the method comprising the steps of: the server receiving a first polling message from a first client; the server, in response to receiving the first polling message, calculates a first time delay for a first message, and sends the first message to the first client, the first message including an indication of the first time delay; and the first client, in response to receiving the first message, causes the first message to be displayed on expiry of the first time delay. 
         [0008]    According to a second aspect of the invention, there is provided an Internet connectable server as claimed in claim  8 . According to a third aspect of the invention, there is provided an Internet connectable client as claimed in claim  14 . 
         [0009]    The current invention achieves a high degree of simultaneity as follows: 
         [0010]    1. At a point in time before information must simultaneously be displayed on all user screens, the server enters a state where the information it transmits to each client is an instruction to display information at some time in the future. 
         [0011]    2. The server remains in this state long enough to ensure that the instruction reaches all clients.
       3. At the appointed time in the future, all client devices simultaneously display the information as instructed.       
 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0013]    These and other features and advantages of the various embodiments disclosed herein will be better understood with respect to the following description and drawings, in which like numbers refer to like parts throughout, and in which: 
           [0014]      FIG. 1  illustrates a prior art method for broadcasting the same information from one server to users; 
           [0015]      FIG. 2  illustrates a first embodiment of the present invention; and 
           [0016]      FIG. 3  illustrates a second embodiment of the present invention. 
       
    
    
     DETAILED DESCRIPTION 
       [0017]      FIG. 2  presents a first embodiment of the invention. Client screens  102 ,  103  poll the server  101  every five seconds to see what information to display. Online voting server  101  wishes the results of a Yes/No voting buttons to be displayed on all client screens  102 ,  103  at exactly 13:00:00. Ten seconds before, at 12:59:50, when clients  102 ,  103  poll the server  101 , server instructs them with messages  201 ,  202 , when to display the buttons. The content of the messages  201 ,  202  will vary according to when the message is sent to ensure all buttons appear simultaneously. 
         [0018]    In the first embodiment, when the message is composed by the server, it calculates the difference in time, according to its own clock, between the present time and the time the client should display the information. This time difference information is included in the messages  201 ,  202 . On receipt of the message, clients  102  and  103  activate timers that trigger the display of the button after the delay, i.e. at exactly 13:00:00 according to the server&#39;s clock time. 
         [0019]    According to  FIG. 3 , in a second embodiment, when each client polls the server,  303 ,  304 , it includes its clock time. When the message is composed by the server, it calculates the difference in time, according to its own clock, between the present time and the time the client should display the information. Then by comparing the client&#39;s clock time with the time on the server clock when the polling message was received, the server computes what the client&#39;s clock will be when the message is to appear. This time information is included in the messages  301 ,  302 . Each client,  102 ,  103 , on receipt of the message, activates a time-based that trigger according to its local clock the display of the button at exactly 13:00:00 according to the server&#39;s clock time.