A non-transitory computer readable medium storing instructions which, when executed by a processor of a presentation server, cause the presentation server to perform a method comprising:
- storing a presentation of a presenter, the presentation having a sequence of one or more presentation slides;
- converting the presentation into a sequence of discrete presentation images, wherein each presentation image of the set of discrete presentation images corresponds to one presentation slide;
- detecting, from the presenter, an instruction to enter a synchronous presentation session in which a presenter controls a sequence of presentation as viewed by a viewer at a viewer computer system;
- upon the instruction to enter the synchronous presentation session being detected, entering a synchronous presentation mode by:
- transmitting, to a presenter computer system of the presenter, a presenter webpage suitable for loading in a presenter web browser;
- and
- enabling, via the presenter webpage, the presenter to select the presentation from one or more presentations stored on the presentation server and associated with the presenter, wherein the presenter webpage includes a presenter script using JavaScript that is configured to (1) display the presentation images of the presenter's screen, (2) to receive controls from the presenter so as to establish a presentation state indicating a current presentation image, and (3) to display a rendering of a screen sharing session between the viewer computer system and the presenter computer system, wherein the screen sharing session is initiated by a placeholder presentation item among the presentation images;
- transmitting, to the viewer computer system, a viewer webpage suitable for loading in a viewer web browser, wherein the viewer webpage is accessible through a link that is uniquely associated with the presenter, and wherein the viewer webpage includes a viewer script using JavaScript that is configured to automatically display the presentation images, responsive to the presenter controlling the sequence of the presentation;
- after the presenter selects the presentation, transmitting, according to the presentation state indicating the current presentation image, a first presentation image via the viewer script in the viewer webpage to the viewer;
- and
- in response to the presenter changing the presentation state indicating the current presentation image, updating the first presentation image with a second presentation image according to a then current presentation state;
- creating, by the presentation server, a link that is uniquely associated with the sequence of discrete presentation images for the presentation to be viewed by the viewer asynchronously;
- and
- detecting, from the viewer, a selection of the link to the presentation images to enter an asynchronous presentation session, wherein the viewer freely controls the sequence of discrete presentation images without participation of the presenter.