Re: [presentation-api] Receiver does not receive the initial message

@Mathieu-R Those codes to handle connections seem confused. Basically, we can start a presentation by either of the following steps:

1. Create a presentation request and call `request.start()`
2. Set a presentation request to `navigator.presentation.defaultRequest` and **click a cast button or menu on the browser's GUI**
<img width="298" alt="screen shot 2018-05-23 at 16 37 56" src="https://user-images.githubusercontent.com/3643972/40410433-c8b0b65c-5ea8-11e8-8abe-928ec45afc26.png">

Then, a presentation connection will be passed via:

- the Promise returned by `request.start()`, in the case of 1.
- the `connectionavailable` event, in the case of 2.

So the following examples are my suggestion:

```js
      if (!id) {
        this.request.start();
      } else {
        this.reconnect(id);
      }
```

These should be corrected like:

```js
      let connection;
      if (!id) {
        connection = await this.request.start();
      } else {
        connection = await this.reconnect(id);
      }
      await this.setConnection(connection);
      resolve();
```

And then,

```js
      // wait until connection is available
      // otherwise we would send data before connection is ready
      navigator.presentation.defaultRequest.onconnectionavailable = async evt => {
        await this.setConnection(evt.connection);
        resolve();
      }
```

These codes should be called in the constructor (after `navigator.presentation.defaultRequest = this.request;`), rather than in `cast()` method.

-- 
GitHub Notification of comment by tomoyukilabs
Please view or discuss this issue at https://github.com/w3c/presentation-api/issues/450#issuecomment-391260395 using your GitHub account

Received on Wednesday, 23 May 2018 08:13:30 UTC