Skip to content

quic|http2: implement webtransport capsule protocol support #65809

Description

@martenrichter

Beside the quic webtransport wire protocol, there is also the capsule protocol, initially developed for http/2, but know also mentioned in the spec drafts as alternative means of transport for http/3.

As browser support is limited (or not existing), I have also made a draft for webtransport over websocket:
https://datatracker.ietf.org/doc/draft-richter-webtransport-websocket/
that allows to polyfill on the UA side.

Both are implemented in my own package:
https://github.com/fails-components/webtransport/tree/master/main/lib/http2/node
and the polyfill over websocket is successfully tested for a while in my deployment.

I have asked upstream nghttp2, nghttp3, there is currently no plan to implement it.

My plan would to turn my low level code to match a subset of QuicSession, and QuicStream interfaces with regard to webtransport and stream/iter (compare PR for quic #63827) and add it to node.js. (Though I do not know where to place it).

(One side note, I have translated some BSD style licensed code from quiche to js (just two files), I would assume, that this should be ok with node.js licenses or do I need to replace this portion ?).

(And if this becomes important, we can still port hot path to C)

@jasnell @pimterry does this sound like a plan?

Activity

  1. Shivang9983 commented on Sep 5, 2026

    @Shivang9983

    Hi, @martenrichter I’d like to work on this issue.

    I’m interested in implementing the WebTransport Capsule Protocol support and would like to investigate the existing WebTransport/QUIC implementation and the proposed interface design described here and in PR #63827.

    I can start by understanding the current quic/HTTP2 architecture, reviewing the existing implementation and protocol requirements, and then work toward a minimal, well-tested implementation that fits Node.js APIs and conventions.

    I’m also happy to investigate the licensing question around the translated quiche code as part of the work.

    If the issue is available, please assign it to me. Thanks!

  2. martenrichter commented on Sep 5, 2026

    @martenrichter
    ContributorAuthor

    @Shivang9983 Well, actually this was for my todo list and to discuss details. As I wrote I have already an implementation, I just need to refactor it.

  3. Shivang9983 commented on Sep 5, 2026

    @Shivang9983

    Got it, @martenrichter thanks for clarifying. I misunderstood the intent of the issue.

    Since you already have an implementation and are mainly looking to refactor it, I’ll leave this one with you. Thanks for the clarification!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions