W3C home > Mailing lists > Public > public-secondscreen@w3.org > March 2015

Re: joinSession and resumeSession

From: Anton Vayvod <avayvod@google.com>
Date: Mon, 9 Mar 2015 21:40:01 +0000
Message-ID: <CAOjek6oC6=ODERw102CM=he-mm3t8C8qFSD_V7_40Rb1dL9F0A@mail.gmail.com>
To: Oleg Beletski <o.beletski@samsung.com>
Cc: "public-secondscreen@w3.org" <public-secondscreen@w3.org>
Hi Oleg!

Thanks for bringing this issue to the attention of the group. Comments
inline:

On Thu, Mar 5, 2015 at 11:09 AM, Oleg Beletski <o.beletski@samsung.com>
wrote:

> Hello,
>
> After reading the Presentation API specification I got a feeling that
> functionality for joining the presentation session and resuming of the
> presentation session are not properly separated from each other in the
> document.
>

On one hand, we are trying to keep the API as simple as possible by keeping
the API surface (e.g. number of new methods) minimal. I agree that having
distinctive methods for distinctive functionality is usually a good design
though.


>
> I understood joining of the presentation session practically as the case
> when multiple originating pages are trying to connect to the same
> presentation from the different UA. There could be a problem if we have
> same URL/PresentationID opened on different presentation devices. There is
> no way to tell API which screen we want to connect to and there is a
> possibility that there is no recent connection, so API will fail unless we
> allow screen selection to happen again. Not sure if we can solve that
> problem without trying to pass extra information about destination screen
> to joinSession method. That problem already captured in issue #39,
> Resumption of multiple sessions.
>

I think the cases we wanted to cover with start/joinSession(U, I) are the
following:

1. There's no existing session with the presentation URL *U* and id *I* started
from the current UA.
1a) There's no remote presentations with the matching URL and id known to
the current UA.

In this case joinSession(U, I) will fail with NoPresentationsFound error.
startSession(U, I) will ask the user to select a device if available and
try to start a new session on the device.

1b) There's at least one remote presentation with the matching URL and id
known to the current UA (e.g. available devices advertise running
presentations somehow)

In this case I think joinSession(U, I) should still fail with
NoPresentationsFound.

startSession(U, I) will ask the user to select a device and if the device
with a matching presentation is selected, the returned session may
correspond to the existing presentation on the device (of course, if the
presentation doesn't support multiple clients, a new presentation will
start and connection with the previous client will be dropped).

2. There's at least one existing session with the URL U and id I started
from the current UA.

startSession(U, I) will work the same way as in 1b)
joinSession(U, I) will return the most recent of these matching sessions.


>
> Session resumption would happen in case user closes and then reopens UA.
> Now it would be sufficient to pass only PresentationSession id as a single
> argument to resumeSession method (not part of current Presentation API) to
> reactivate the session for given session id (preserved in localStorage).
> That would restore connection to the same Url-PresentationID-Screen
> combination if it is still active.
>

The session id by the current algorithms is the same as the presentation id
and passing the presentation URL along with it allows the presentation id
to be unique for each presentation URL, but not globally.


>
> One more confusing thing is that in the example provided (chapter 5) there
> is an assumption that startSession creates PresentationSession with id that
> is the same as the presentationID given to it. It is the session.id that
> is restored from localStorage as the presentationID and then passed to
> joinSession call.
>

By the currently specified algorithms in the spec, the session id
<http://session.id> is the presentation id passed to
startSession/joinSession calls or a random string generated by the UA if
startSession was called with an undefined id.


>
> Did you have any discussion about possibility of having resumeSession
> method or restoring session via session.id? Please let me know if I
> should create an issue for any of those subjects on github.
>

Returning a UA generated unique session id in response to start/joinSession
sounds like a good way to allow the page to choose which exactly session to
join but makes it a little harder to share the session ids.


>
> Best regards,
> --
> Oleg Beletski
> Principal Engineer
> Samsung Electronics R&D, Finland, Espoo
> o.beletski@samsung.com
>
>
>
>
>
Received on Monday, 9 March 2015 21:40:49 UTC

This archive was generated by hypermail 2.3.1 : Monday, 9 March 2015 21:40:49 UTC