WebKit / standards-positions

WebKit's positions on emerging web specifications
https://webkit.org/standards-positions/
240 stars 18 forks source link

WebSocketStream: Stream-based backpressure-supporting API for the WebSocket protocol #315

Open ricea opened 5 months ago

ricea commented 5 months ago

WebKittens

@annevk

Title of the spec

WebSocketStream

URL to the spec

https://whatpr.org/websockets/48.html#the-websocketstream-interface

URL to the spec's repository

https://github.com/whatwg/websockets

Issue Tracker URL

No response

Explainer URL

https://github.com/ricea/websocketstream-explainer/blob/master/README.md

TAG Design Review URL

https://github.com/w3ctag/design-reviews/issues/394

Mozilla standards-positions issue URL

https://github.com/mozilla/standards-positions/issues/970

WebKit Bugzilla URL

No response

Radar URL

No response

Description

WebSocketStream is a new API for the WebSocket protocol that enables backpressure by integrating with Streams. The benefits are better behaviour when one side cannot keep up with the data rate, and a more modern API.

annevk commented 4 months ago

Overall this looks good. However, do you have some data that supports investing more in WebSocket? Now there's WebTransport and streaming in fetch it's becoming kind-of niche so it would be good to know this effort is worth the ongoing maintenance cost.

ricea commented 4 months ago

Chrome sees WebSockets used on 10% of page loads: https://chromestatus.com/metrics/feature/timeline/popularity/1149

For comparison WebTransport is still at 0.002% of page loads: https://chromestatus.com/metrics/feature/timeline/popularity/3472

I think that's an indication of the time it takes to ramp up support for a new protocol. WebTransport can do a lot more than WebSocket, but it will be years before it is as easy to deploy. WebTransport is a powerful investment for the future, whereas WebSocketStream is a practical investment for the present.

Most (all?) major server-side environments have mature, solid WebSocket support.

WebSockets are widely supported by CDNs: https://www.cdnplanet.com/guides/websockets/#:~:text=without%20an%20origin%3F-,CDN%20comparison,-Yes

Interest in WebSockets is growing for some reason: https://insights.stackoverflow.com/trends?tags=websocket

Page load percentages for some vaguely related technologies:

annevk commented 4 months ago

Thanks! I should have specifically asked for web developer interest as we're curious what adoption might look like. Per https://chromestatus.com/feature/5189728691290112 there's no indication this is desired?

And per https://issues.chromium.org/issues/41470216 the little feedback that was given seemed to desire a fix for backpressure on top of the existing API?

tomayac commented 4 months ago

For developer interest: