Skip to content

Conversation

@magicmark
Copy link

Fix #463

(This PR is 95% authored by claude. I have manually verified against a locally running server. Code looks good? I'll keep reviewing too before removing the draft marker since I don't just wanna dump a bunch of slop on you.)


Implements the multipart subscription protocol for receiving streaming subscription updates over HTTP as an alternative to WebSocket transports. This protocol is implemented by Apollo GraphOS Router and other compatible servers, and is particularly useful when WebSocket connections are not available or blocked by infrastructure.

The transport handles multipart/mixed responses with heartbeat support and proper error handling for both GraphQL and transport-level errors. It requires servers to support the multipart subscription protocol - requests that don't receive a multipart response will fail with a clear error message.

🤖 Generated with Claude Code

Implements the multipart subscription protocol for receiving streaming
subscription updates over HTTP as an alternative to WebSocket transports.
This protocol is implemented by Apollo GraphOS Router and other compatible
servers, and is particularly useful when WebSocket connections are not
available or blocked by infrastructure.

The transport handles multipart/mixed responses with heartbeat support and
proper error handling for both GraphQL and transport-level errors. It
requires servers to support the multipart subscription protocol - requests
that don't receive a multipart response will fail with a clear error
message.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@magicmark
Copy link
Author

cc @patrick91 ;)

@leszekhanusz
Copy link
Collaborator

Thanks for your work on this!

So do you know if there is a public backend somewhere supporting this protocol?

@magicmark
Copy link
Author

magicmark commented Nov 12, 2025

So do you know if there is a public backend somewhere supporting this protocol?

not that i know of - but i'll start doing that now, i can throw something up on a lambda worker

@leszekhanusz
Copy link
Collaborator

not that i know of - but i'll start doing that now, i can throw something up on a lambda worker

Great!

@codecov
Copy link

codecov bot commented Nov 12, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (7fb869a) to head (6c5c850).
⚠️ Report is 45 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##            master      #574    +/-   ##
==========================================
  Coverage   100.00%   100.00%            
==========================================
  Files           38        41     +3     
  Lines         2908      3375   +467     
==========================================
+ Hits          2908      3375   +467     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@leszekhanusz
Copy link
Collaborator

leszekhanusz commented Nov 12, 2025

For the linting issues, you should run make check to fix the code. See CONTRIBUTING.md

@magicmark
Copy link
Author

magicmark commented Nov 13, 2025

@leszekhanusz https://github.com/magicmark/gql-book-server/ :)

publicly accessible here here: https://gql-book-server.fly.dev/graphql

(I was too dumb to get multipart + chunked transfer encoding working via a lambda so just deploying on the cheapest fly.io machine possible)

@magicmark magicmark force-pushed the add_http_multipart_transport branch from 131a424 to 6c5c850 Compare November 13, 2025 06:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Support Subscriptions HTTP Multipart Protocol

2 participants