- From: Mark Foltz via GitHub <sysbot+gh@w3.org>
- Date: Mon, 18 Apr 2016 18:55:21 +0000
- To: public-secondscreen@w3.org
Hi @domenic, this issue was tagged for consideration as the
Presentation API moves towards Candidate Recommendation. Thanks for
your detailed answers earlier.
I briefly reviewed the state of the Streams specification [1] and
wanted to share how it might fit in with the Presentation API.
It looks like from an API point of view, the suggested integration is
to expose a way to get the ReadableByteStream and WritableByteStream
for a PresentationConnection, to allow two-way messaging with the
browsing context that owns the other side of the
PresentationConnection. The WritableByteStream object could take
"any" type, but it would need to be enforced that the object is
serializable (through some mechanism) to allow messaging with remote
user agents.
```
partial interface PresentationConnection : EventTarget {
readonly attribute Promise<ReadableByteStream> readStream;
readonly attribute Promise<WritableByteStream> writeStream;
}
```
Several details need to be worked out:
1. Are these streams instantiated with the PresentationConnection, or
lazily only when the connection enters a "connected" state? The
approach above follows the latter, along the lines of the Fetch API in
Chromium [2].
2. The canceled/errored states of the streams would need to be mapped
to/and from the equivalent PresentationConnection states and event
handlers. I am not sure if the Reader events would need to propagate
to/from the PresentationConnection states (i.e., when should the
Promise from reader.read() reject.)
3. What types are permitted to be written to writeStream? Must
include at least DOMString, Blob, ArrayBuffer, and ArrayBufferView for
backwards compatibility.
4. Do we leave serialization entirely in the hands of the page that
obtains the WritableByteStream, specify a serialization format for any
permitted type, or specify a TransformStream that the page should
attach to the stream handle serialization?
In terms of implementation, it looks like the major browsers are
further along on the reader side, than the writer side. Until a
bidirectional API is in place, I think it will be hard to make
concrete implementation progress.
One possible approach in the interim: If there were an
UnderlyingSource interface that could be implemented by a polyfill
around the current API, then the page could construct its own
ReadableStream/WritableStream objects.
[1] https://streams.spec.whatwg.org/
[2]
https://code.google.com/p/chromium/codesearch#chromium/src/third_party/WebKit/Source/modules/fetch/Response.idl&l=30
--
GitHub Notification of comment by mfoltzgoogle
Please view or discuss this issue at
https://github.com/w3c/presentation-api/issues/163#issuecomment-211527028
using your GitHub account
Received on Monday, 18 April 2016 18:55:23 UTC