feat: add first-class Server-Sent Events API - #63
Merged
Merged
Conversation
noneandundefined
added a commit
that referenced
this pull request
Sep 27, 2026
* Merge pull request #53 from netcorelink/feat/fixed-worker-pool feat: add non-blocking event-driven server runtime * feat: establish maintainer runtime quality baseline (#57) * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: extract bounded worker pool * refactor: extract bounded worker pool * refactor: separate runtime worker pool * feat: expose internal worker runtime stats * feat: expose internal worker runtime stats * feat: expose worker runtime metrics * feat: export worker runtime metrics * feat: expose worker runtime metrics * feat: publish worker runtime metrics API * docs: define maintainer merge baseline * docs: document runtime architecture and contracts * docs: link maintainer architecture baseline * ci: add warnings sanitizers fuzz and format gates * test: add HTTP header parser fuzz target * ci: enforce maintainer quality gates * docs: document worker runtime metrics * test: cover worker runtime metrics * style: improve runtime code spacing * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * docs: use canonical public enum names * docs: use canonical public enum names * docs: use canonical public enum names * docs: use canonical public enum names * docs: use canonical public enum names * docs: use canonical public enum names * docs: use canonical public enum names * docs: use canonical public enum names * docs: use canonical public enum names * refactor: keep legacy server enum aliases * refactor: keep legacy server enum aliases * refactor: keep legacy normalizer aliases * refactor: keep legacy normalizer aliases * refactor: keep legacy body ownership aliases * refactor: keep legacy body ownership aliases * style: improve vertical spacing without forced wrapping * test: reflect runtime metrics lifecycle * fix: initialize runtime metrics snapshot * fix: make compression token bounds explicit * fix: make package validation pipefail-safe * docs: align PR checklist with maintainer baseline * fix: restore valid CI workflow * perf: resolve medium and low bottlenecks from #56 (#61) * perf(request): pool cleanup entries and hash named contexts * perf(json): parse request body without full copy * perf(cors): sort origins for logarithmic lookup * perf(cors): use binary search for origin checks * perf(metrics): remove global lock and hash route metrics * test(request): cover pooled cleanup, hashed contexts and bounded JSON * test(cors): cover lookup in unsorted configured origins * test(metrics): exercise route hash table growth * docs(metrics): document parameters and return values * docs(metrics): sync public header comments * docs(cors): document parameters and sorted lookup * docs(cors): document parameters and sorted lookup * docs(request): normalize lifecycle and validation API comments * docs(request): normalize lifecycle and validation API comments * docs(cors): document configuration parameters * fix(perf): use canonical FNV-1a offset basis * fix(perf): use canonical FNV-1a offset basis * fix(metrics): preserve gauge snapshot invariants * docs(request): document bearer and body chunk helpers * feat: add internal HTTP/2 transport interface * feat: implement HTTP/2 server and client transport * fix: send valid HTTP/2 server settings * refactor: route socket handling through HTTP/2 transport * refactor: expose internal HTTP/2 dispatch adapter * feat: negotiate HTTP/2 with TLS ALPN * refactor: run accepted connections as HTTP/2 sessions * refactor: use HTTP/2 for remote service calls * build: link nghttp2 for HTTP/2 transport * build: install nghttp2 dependencies in container * ci: install nghttp2 dependencies * packaging: build HTTP/2 packages with nghttp2 * packaging: declare nghttp2 runtime dependency * fix: include stdio for internal dispatch adapter * packaging: expose nghttp2 linker dependency * packaging: expose nghttp2 linker dependency for TLS builds * feat: preserve HTTP/2 request and response headers * fix: keep idle sockets out of HTTP/2 worker pool * test: run server integration suite over HTTP/2 * test: exercise metrics over HTTP/2 * test: exercise compression over HTTP/2 * fix: return HTTP/2 limits cleanly and stabilize response metadata * refactor: disable legacy connection-level WebSocket upgrade on HTTP/2 * docs: describe request protocol without legacy version * docs: describe public request protocol as negotiated * test: remove legacy protocol fixtures * docs: describe HTTP/2 transport * docs: describe HTTP/2 transport in Russian * docs: update server HTTP/2 model * docs: update Russian server HTTP/2 model * docs: update CORS example to HTTP/2 * docs: update Russian CORS example to HTTP/2 * docs: advertise HTTP/2 on documentation site * docs: document nghttp2 build dependency * docs: document nghttp2 dependency in Russian * test: remove duplicate HTTP/2 IPv6 helper * fix: avoid duplicate HTTP/2 representation headers in proxied responses * test: use HTTP/2 status line length in metrics assertions * fix: synchronize HTTP/2 shutdown flag access * refactor: refactor arch. code in full project * fix: correct TLS client certificate verification expression * refactor: drop Windows support (#64) * refactor: make platform layer Linux-only * refactor: use pthreads only * build: remove Windows targets * ci: remove Windows build job * build: remove Windows installer * build: remove Windows bundled cJSON source * build: remove Windows bundled cJSON header * docs: mark libchttpx as Linux-only * docs: mark libchttpx as Linux-only * release: remove Windows installation instructions * release: remove Windows installation instructions * docs: update website platform support * docs: update website platform support * feat: add WebSocket support over HTTP/2 (#65) * feat(websocket): add server websocket state * feat(websocket): define HTTP/2 websocket API * feat(websocket): implement RFC 6455 frame handling * feat(websocket): clean up websocket routes on shutdown * feat(websocket): add websocket stream state to HTTP/2 * feat(websocket): bridge websocket frames over HTTP/2 DATA * feat(websocket): support RFC 8441 extended CONNECT * feat(websocket): expose websocket API in public header * docs(websocket): add echo server example * build: include websocket example * test(websocket): cover frames fragmentation ping and close * test(websocket): run websocket parser tests in make test * fix(websocket): harden close callback lifecycle * fix(websocket): keep public API C++ compatible * docs(websocket): document HTTP/2 websocket API * docs(websocket): add Russian HTTP/2 websocket guide * fix(websocket): use AppShutdown in example * feat: refactor BindJSON response code, remove static return text * fix: restore platform-specific event loop guards * feat: add first-class Server-Sent Events API (#63) * feat(sse): add event-stream content type * feat(sse): add streaming transport hooks * feat(sse): mark streaming responses * feat(sse): add public SSE helper declarations * feat(sse): implement SSE framing helpers * feat(sse): expose first-class SSE API * feat(sse): hand streaming responses to transport * feat(sse): stream events over HTTP/2 DATA frames * test(sse): cover SSE framing and lifecycle * docs(sse): add server example * docs(sse): add EventSource browser client * test(sse): exercise HTTP/2 streaming transport * test(sse): wire SSE tests and example into build * docs(sse): document SSE API * docs(sse): add Russian SSE documentation * docs(sse): add SSE to documentation index * docs(sse): add SSE to Russian documentation index * docs(sse): list SSE example * docs(sse): mention SSE in project README * docs(sse): mention SSE in Russian README * fix(sse): pump HTTP/2 flow control while flushing events * refactor(sse): simplify multiline formatter * fix(sse): preserve configured CORS headers for streams * test(sse): verify CORS on EventSource streams * test(http2): preserve content type in exchange helper * fix(sse): preserve event-stream content type in HTTP/2 calls * fix: restore valid Makefile after SSE merge * fix: restore HTTP/2 stream initialization after merge * refactor: remove Windows event loop implementation * refactor: remove Windows branch from SSE example * ci: install nghttp2 for CodeQL build
noneandundefined
added a commit
that referenced
this pull request
Sep 27, 2026
* Merge pull request #53 from netcorelink/feat/fixed-worker-pool feat: add non-blocking event-driven server runtime * feat: establish maintainer runtime quality baseline (#57) * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: extract bounded worker pool * refactor: extract bounded worker pool * refactor: separate runtime worker pool * feat: expose internal worker runtime stats * feat: expose internal worker runtime stats * feat: expose worker runtime metrics * feat: export worker runtime metrics * feat: expose worker runtime metrics * feat: publish worker runtime metrics API * docs: define maintainer merge baseline * docs: document runtime architecture and contracts * docs: link maintainer architecture baseline * ci: add warnings sanitizers fuzz and format gates * test: add HTTP header parser fuzz target * ci: enforce maintainer quality gates * docs: document worker runtime metrics * test: cover worker runtime metrics * style: improve runtime code spacing * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * docs: use canonical public enum names * docs: use canonical public enum names * docs: use canonical public enum names * docs: use canonical public enum names * docs: use canonical public enum names * docs: use canonical public enum names * docs: use canonical public enum names * docs: use canonical public enum names * docs: use canonical public enum names * refactor: keep legacy server enum aliases * refactor: keep legacy server enum aliases * refactor: keep legacy normalizer aliases * refactor: keep legacy normalizer aliases * refactor: keep legacy body ownership aliases * refactor: keep legacy body ownership aliases * style: improve vertical spacing without forced wrapping * test: reflect runtime metrics lifecycle * fix: initialize runtime metrics snapshot * fix: make compression token bounds explicit * fix: make package validation pipefail-safe * docs: align PR checklist with maintainer baseline * fix: restore valid CI workflow * perf: resolve medium and low bottlenecks from #56 (#61) * perf(request): pool cleanup entries and hash named contexts * perf(json): parse request body without full copy * perf(cors): sort origins for logarithmic lookup * perf(cors): use binary search for origin checks * perf(metrics): remove global lock and hash route metrics * test(request): cover pooled cleanup, hashed contexts and bounded JSON * test(cors): cover lookup in unsorted configured origins * test(metrics): exercise route hash table growth * docs(metrics): document parameters and return values * docs(metrics): sync public header comments * docs(cors): document parameters and sorted lookup * docs(cors): document parameters and sorted lookup * docs(request): normalize lifecycle and validation API comments * docs(request): normalize lifecycle and validation API comments * docs(cors): document configuration parameters * fix(perf): use canonical FNV-1a offset basis * fix(perf): use canonical FNV-1a offset basis * fix(metrics): preserve gauge snapshot invariants * docs(request): document bearer and body chunk helpers * feat: add internal HTTP/2 transport interface * feat: implement HTTP/2 server and client transport * fix: send valid HTTP/2 server settings * refactor: route socket handling through HTTP/2 transport * refactor: expose internal HTTP/2 dispatch adapter * feat: negotiate HTTP/2 with TLS ALPN * refactor: run accepted connections as HTTP/2 sessions * refactor: use HTTP/2 for remote service calls * build: link nghttp2 for HTTP/2 transport * build: install nghttp2 dependencies in container * ci: install nghttp2 dependencies * packaging: build HTTP/2 packages with nghttp2 * packaging: declare nghttp2 runtime dependency * fix: include stdio for internal dispatch adapter * packaging: expose nghttp2 linker dependency * packaging: expose nghttp2 linker dependency for TLS builds * feat: preserve HTTP/2 request and response headers * fix: keep idle sockets out of HTTP/2 worker pool * test: run server integration suite over HTTP/2 * test: exercise metrics over HTTP/2 * test: exercise compression over HTTP/2 * fix: return HTTP/2 limits cleanly and stabilize response metadata * refactor: disable legacy connection-level WebSocket upgrade on HTTP/2 * docs: describe request protocol without legacy version * docs: describe public request protocol as negotiated * test: remove legacy protocol fixtures * docs: describe HTTP/2 transport * docs: describe HTTP/2 transport in Russian * docs: update server HTTP/2 model * docs: update Russian server HTTP/2 model * docs: update CORS example to HTTP/2 * docs: update Russian CORS example to HTTP/2 * docs: advertise HTTP/2 on documentation site * docs: document nghttp2 build dependency * docs: document nghttp2 dependency in Russian * test: remove duplicate HTTP/2 IPv6 helper * fix: avoid duplicate HTTP/2 representation headers in proxied responses * test: use HTTP/2 status line length in metrics assertions * fix: synchronize HTTP/2 shutdown flag access * refactor: refactor arch. code in full project * fix: correct TLS client certificate verification expression * refactor: drop Windows support (#64) * refactor: make platform layer Linux-only * refactor: use pthreads only * build: remove Windows targets * ci: remove Windows build job * build: remove Windows installer * build: remove Windows bundled cJSON source * build: remove Windows bundled cJSON header * docs: mark libchttpx as Linux-only * docs: mark libchttpx as Linux-only * release: remove Windows installation instructions * release: remove Windows installation instructions * docs: update website platform support * docs: update website platform support * feat: add WebSocket support over HTTP/2 (#65) * feat(websocket): add server websocket state * feat(websocket): define HTTP/2 websocket API * feat(websocket): implement RFC 6455 frame handling * feat(websocket): clean up websocket routes on shutdown * feat(websocket): add websocket stream state to HTTP/2 * feat(websocket): bridge websocket frames over HTTP/2 DATA * feat(websocket): support RFC 8441 extended CONNECT * feat(websocket): expose websocket API in public header * docs(websocket): add echo server example * build: include websocket example * test(websocket): cover frames fragmentation ping and close * test(websocket): run websocket parser tests in make test * fix(websocket): harden close callback lifecycle * fix(websocket): keep public API C++ compatible * docs(websocket): document HTTP/2 websocket API * docs(websocket): add Russian HTTP/2 websocket guide * fix(websocket): use AppShutdown in example * feat: refactor BindJSON response code, remove static return text * fix: restore platform-specific event loop guards * feat: add first-class Server-Sent Events API (#63) * feat(sse): add event-stream content type * feat(sse): add streaming transport hooks * feat(sse): mark streaming responses * feat(sse): add public SSE helper declarations * feat(sse): implement SSE framing helpers * feat(sse): expose first-class SSE API * feat(sse): hand streaming responses to transport * feat(sse): stream events over HTTP/2 DATA frames * test(sse): cover SSE framing and lifecycle * docs(sse): add server example * docs(sse): add EventSource browser client * test(sse): exercise HTTP/2 streaming transport * test(sse): wire SSE tests and example into build * docs(sse): document SSE API * docs(sse): add Russian SSE documentation * docs(sse): add SSE to documentation index * docs(sse): add SSE to Russian documentation index * docs(sse): list SSE example * docs(sse): mention SSE in project README * docs(sse): mention SSE in Russian README * fix(sse): pump HTTP/2 flow control while flushing events * refactor(sse): simplify multiline formatter * fix(sse): preserve configured CORS headers for streams * test(sse): verify CORS on EventSource streams * test(http2): preserve content type in exchange helper * fix(sse): preserve event-stream content type in HTTP/2 calls * fix: restore valid Makefile after SSE merge * fix: restore HTTP/2 stream initialization after merge * refactor: remove Windows event loop implementation * refactor: remove Windows branch from SSE example * ci: install nghttp2 for CodeQL build
noneandundefined
added a commit
that referenced
this pull request
Sep 27, 2026
* Merge pull request #53 from netcorelink/feat/fixed-worker-pool feat: add non-blocking event-driven server runtime * feat: establish maintainer runtime quality baseline (#57) * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: normalize public error result names * refactor: extract bounded worker pool * refactor: extract bounded worker pool * refactor: separate runtime worker pool * feat: expose internal worker runtime stats * feat: expose internal worker runtime stats * feat: expose worker runtime metrics * feat: export worker runtime metrics * feat: expose worker runtime metrics * feat: publish worker runtime metrics API * docs: define maintainer merge baseline * docs: document runtime architecture and contracts * docs: link maintainer architecture baseline * ci: add warnings sanitizers fuzz and format gates * test: add HTTP header parser fuzz target * ci: enforce maintainer quality gates * docs: document worker runtime metrics * test: cover worker runtime metrics * style: improve runtime code spacing * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * refactor: normalize public enum names * docs: use canonical public enum names * docs: use canonical public enum names * docs: use canonical public enum names * docs: use canonical public enum names * docs: use canonical public enum names * docs: use canonical public enum names * docs: use canonical public enum names * docs: use canonical public enum names * docs: use canonical public enum names * refactor: keep legacy server enum aliases * refactor: keep legacy server enum aliases * refactor: keep legacy normalizer aliases * refactor: keep legacy normalizer aliases * refactor: keep legacy body ownership aliases * refactor: keep legacy body ownership aliases * style: improve vertical spacing without forced wrapping * test: reflect runtime metrics lifecycle * fix: initialize runtime metrics snapshot * fix: make compression token bounds explicit * fix: make package validation pipefail-safe * docs: align PR checklist with maintainer baseline * fix: restore valid CI workflow * perf: resolve medium and low bottlenecks from #56 (#61) * perf(request): pool cleanup entries and hash named contexts * perf(json): parse request body without full copy * perf(cors): sort origins for logarithmic lookup * perf(cors): use binary search for origin checks * perf(metrics): remove global lock and hash route metrics * test(request): cover pooled cleanup, hashed contexts and bounded JSON * test(cors): cover lookup in unsorted configured origins * test(metrics): exercise route hash table growth * docs(metrics): document parameters and return values * docs(metrics): sync public header comments * docs(cors): document parameters and sorted lookup * docs(cors): document parameters and sorted lookup * docs(request): normalize lifecycle and validation API comments * docs(request): normalize lifecycle and validation API comments * docs(cors): document configuration parameters * fix(perf): use canonical FNV-1a offset basis * fix(perf): use canonical FNV-1a offset basis * fix(metrics): preserve gauge snapshot invariants * docs(request): document bearer and body chunk helpers * feat: add internal HTTP/2 transport interface * feat: implement HTTP/2 server and client transport * fix: send valid HTTP/2 server settings * refactor: route socket handling through HTTP/2 transport * refactor: expose internal HTTP/2 dispatch adapter * feat: negotiate HTTP/2 with TLS ALPN * refactor: run accepted connections as HTTP/2 sessions * refactor: use HTTP/2 for remote service calls * build: link nghttp2 for HTTP/2 transport * build: install nghttp2 dependencies in container * ci: install nghttp2 dependencies * packaging: build HTTP/2 packages with nghttp2 * packaging: declare nghttp2 runtime dependency * fix: include stdio for internal dispatch adapter * packaging: expose nghttp2 linker dependency * packaging: expose nghttp2 linker dependency for TLS builds * feat: preserve HTTP/2 request and response headers * fix: keep idle sockets out of HTTP/2 worker pool * test: run server integration suite over HTTP/2 * test: exercise metrics over HTTP/2 * test: exercise compression over HTTP/2 * fix: return HTTP/2 limits cleanly and stabilize response metadata * refactor: disable legacy connection-level WebSocket upgrade on HTTP/2 * docs: describe request protocol without legacy version * docs: describe public request protocol as negotiated * test: remove legacy protocol fixtures * docs: describe HTTP/2 transport * docs: describe HTTP/2 transport in Russian * docs: update server HTTP/2 model * docs: update Russian server HTTP/2 model * docs: update CORS example to HTTP/2 * docs: update Russian CORS example to HTTP/2 * docs: advertise HTTP/2 on documentation site * docs: document nghttp2 build dependency * docs: document nghttp2 dependency in Russian * test: remove duplicate HTTP/2 IPv6 helper * fix: avoid duplicate HTTP/2 representation headers in proxied responses * test: use HTTP/2 status line length in metrics assertions * fix: synchronize HTTP/2 shutdown flag access * refactor: refactor arch. code in full project * fix: correct TLS client certificate verification expression * refactor: drop Windows support (#64) * refactor: make platform layer Linux-only * refactor: use pthreads only * build: remove Windows targets * ci: remove Windows build job * build: remove Windows installer * build: remove Windows bundled cJSON source * build: remove Windows bundled cJSON header * docs: mark libchttpx as Linux-only * docs: mark libchttpx as Linux-only * release: remove Windows installation instructions * release: remove Windows installation instructions * docs: update website platform support * docs: update website platform support * feat: add WebSocket support over HTTP/2 (#65) * feat(websocket): add server websocket state * feat(websocket): define HTTP/2 websocket API * feat(websocket): implement RFC 6455 frame handling * feat(websocket): clean up websocket routes on shutdown * feat(websocket): add websocket stream state to HTTP/2 * feat(websocket): bridge websocket frames over HTTP/2 DATA * feat(websocket): support RFC 8441 extended CONNECT * feat(websocket): expose websocket API in public header * docs(websocket): add echo server example * build: include websocket example * test(websocket): cover frames fragmentation ping and close * test(websocket): run websocket parser tests in make test * fix(websocket): harden close callback lifecycle * fix(websocket): keep public API C++ compatible * docs(websocket): document HTTP/2 websocket API * docs(websocket): add Russian HTTP/2 websocket guide * fix(websocket): use AppShutdown in example * feat: refactor BindJSON response code, remove static return text * fix: restore platform-specific event loop guards * feat: add first-class Server-Sent Events API (#63) * feat(sse): add event-stream content type * feat(sse): add streaming transport hooks * feat(sse): mark streaming responses * feat(sse): add public SSE helper declarations * feat(sse): implement SSE framing helpers * feat(sse): expose first-class SSE API * feat(sse): hand streaming responses to transport * feat(sse): stream events over HTTP/2 DATA frames * test(sse): cover SSE framing and lifecycle * docs(sse): add server example * docs(sse): add EventSource browser client * test(sse): exercise HTTP/2 streaming transport * test(sse): wire SSE tests and example into build * docs(sse): document SSE API * docs(sse): add Russian SSE documentation * docs(sse): add SSE to documentation index * docs(sse): add SSE to Russian documentation index * docs(sse): list SSE example * docs(sse): mention SSE in project README * docs(sse): mention SSE in Russian README * fix(sse): pump HTTP/2 flow control while flushing events * refactor(sse): simplify multiline formatter * fix(sse): preserve configured CORS headers for streams * test(sse): verify CORS on EventSource streams * test(http2): preserve content type in exchange helper * fix(sse): preserve event-stream content type in HTTP/2 calls * fix: restore valid Makefile after SSE merge * fix: restore HTTP/2 stream initialization after merge * refactor: remove Windows event loop implementation * refactor: remove Windows branch from SSE example * ci: install nghttp2 for CodeQL build * fix: fixed workflows failed procedurs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #43
API