Skip to content

Conversation

@jwaldrip
Copy link
Member

@jwaldrip jwaldrip commented Sep 5, 2025

Summary

This PR adds Server-Sent Events (SSE) transport support to absinthe_plug for incremental delivery with @defer and @stream directives.

⚠️ DEPENDENCY NOTICE

This PR depends on gigsmart/absinthe#gigmart/defer-stream-incremental
The main absinthe package must be merged first before this PR can be merged.

Features

  • Server-Sent Events (SSE) adapter for HTTP streaming
  • Multipart response format support
  • Proper chunked transfer encoding
  • Graceful connection handling

Implementation

  • Absinthe.Plug.Incremental.SSE - SSE transport adapter
  • Event stream formatting
  • Connection lifecycle management

Testing

  • SSE protocol compliance
  • Chunked encoding validation
  • Connection recovery scenarios

Breaking Changes

None - incremental delivery is opt-in and backward compatible.

jwaldrip and others added 6 commits September 5, 2025 12:12
Implements SSE transport for @defer and @stream directives:
- Server-Sent Events (SSE) adapter for HTTP streaming
- Multipart response format support
- Proper chunked transfer encoding

DEPENDS ON: absinthe package defer-stream-incremental branch must be merged first

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
BREAKING: Refactored single-file SSE implementation into modular structure:
- SSE.EventFormatter: Event formatting utilities
- SSE.ConnectionManager: Connection lifecycle management
- SSE.QueryProcessor: GraphQL query processing
- SSE.Router: Phoenix router helpers and plugs

docs: Add comprehensive HTTP/SSE incremental delivery documentation

- Server-Sent Events implementation guide
- Client-side integration examples (vanilla JS, React)
- Performance optimization and monitoring
- Security considerations and troubleshooting

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

Co-Authored-By: Claude <noreply@anthropic.com>
…y testing

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

Co-Authored-By: Claude <noreply@anthropic.com>
…very

Point to gigsmart/absinthe branch gigmart/defer-stream-incremental
for testing the @defer and @stream directive implementation.

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

Co-Authored-By: Claude <noreply@anthropic.com>
Update installation dependencies in README_INCREMENTAL.md to point to the
remote git repositories instead of hex packages for testing incremental
delivery features.

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

Co-Authored-By: Claude <noreply@anthropic.com>
Move incremental delivery content from temporary README_INCREMENTAL.md
into the main README.md file. Remove temporary file and properly document
the HTTP/SSE incremental delivery features.

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

Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants