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.
What is the purpose of this pull request?
Revisit signed streams implementation and introduce a standalone mode—an upgraded version of RPC-less setup suitable for any application (not only Hotwire).
What changes did you make? (overview)
Added a reserved "$pubsub" channel for direct pub/sub support
Unifed signed stream controllers implementations
--streams_secret
$pubsub
with--public_streams
must be used instead)Renamed JWT params and simplified terminology (switch focus from identification to authentication for the standalone mode)
Add no auth mode (
--noauth
)Introduce shortcut configuration options (
--secret
,--public
)Introduce
--broadcast_key
option (instead of older--http_broadcast_secret
, but can be used with other broadcasters)Auto-generate broadcast key and RPC secret from the application secret (if not set explicitly)
Added new broadcasting docs (AnyCable server oriented)
Added new RPC docs
HTTP broadcaster is enabled by default
Changes in other libraries
anycable
:AnyCable.signed_stream(val)
andconfig.streams_secret
andconfig.secret
anycable
: upgrade HTTP adapter and RPC HTTP to auto-generate auth secrets from the application secretanycable
: added JWTanycable-rails
:#signed_stream_name
helperanycable-rails
: JWT integration@anycable/core
:cable.streamFrom(...)
andcable.streamFromSigned(...)
.@anycable/serverless
:signStream(name: string): string
@anycable/serverless
: upgrade broadcaster to sign requestsIs there anything you'd like reviewers to focus on?
Check out the docs:
Checklist