ReverbServiceProvider
class ReverbServiceProvider extends ServiceProvider
Properties
| int | $priority | The registration priority for this provider. |
from ServiceProvider |
| protected array | $bootingCallbacks | All of the registered booting callbacks. |
from ServiceProvider |
| protected array | $bootedCallbacks | All of the registered booted callbacks. |
from ServiceProvider |
| static array | $publishes | The paths that should be published. |
from ServiceProvider |
| static array | $publishGroups | The paths that should be published by group. |
from ServiceProvider |
| static protected array | $publishableMigrationPaths | The migration paths available for publishing. |
from ServiceProvider |
| static array<string, string> | $optimizeCommands | Commands that should be run during the "optimize" command. |
from ServiceProvider |
| static array<string, string> | $optimizeClearCommands | Commands that should be run during the "optimize:clear" command. |
from ServiceProvider |
| static array<string, string> | $reloadCommands | Commands that should be run during the "reload" command. |
from ServiceProvider |
Methods
Determine whether this provider should be registered and booted.
Register any application services.
Register a booting callback to be run before the "boot" method is called.
Merge the given configuration with the existing configuration.
Get configuration arrays whose entries should be merged by name.
Replace the given configuration with the existing configuration recursively.
Change the configuration with a callback, again whenever a worker rebuilds its configuration.
Load the given routes file if routes are not already cached.
Register a view file namespace.
Register the given view components with a custom prefix.
Register a translation file namespace.
Register a JSON translation file path.
Register database migration paths.
Setup an after resolving listener, or fire immediately if already resolved.
Register migration paths to be published by the publish command.
Register paths to be published by the publish command.
Ensure the publish array for the service provider is initialized.
Add a publish group / tag to the service provider.
Get the paths to publish.
Get the paths for the provider or group (or both).
Get the paths for the provider and group.
Get the service providers available for publishing.
Get the migration paths available for publishing.
Add a provider to the bootstrap provider configuration file.
Remove a provider from the bootstrap provider file.
Register commands that should run on "optimize".
Register commands that should run on "reload".
Get a short descriptive key for the current service provider.
Replace the bootstrap provider file without exposing partial contents.
Get the default providers for a Hypervel application.
Register the Reverb WebSocket server in the server configuration.
Register the isolated Reverb router singleton.
Bootstrap any application services.
Register periodic tasks for connection cleanup and table monitoring.
Register the pipe message listener for intra-node broadcast fan-out.
Register the graceful shutdown handler for worker exit.
Drain all active WebSocket connections on this worker.
Report a shutdown failure without interrupting remaining cleanup.
Disconnect the Redis pub/sub subscriber if scaling is enabled.
Schedule flush jobs for webhook batches that need one.
Check Swoole Table capacity and log a warning if nearing the limit.
Check a Swoole Table's capacity and log a warning if above 80%.
Details
in
ServiceProvider at line 84
__construct(Application $app)
Create a new service provider instance.
in
ServiceProvider at line 98
bool
isEnabled()
Determine whether this provider should be registered and booted.
Hypervel-specific extension (not in Laravel). Override on a subclass to gate registration on runtime config / env / feature flags. When this returns false the provider is instantiated but neither register() nor boot() is called, its bindings/singletons properties are not processed, and it is not tracked in the application's provider list.
at line 74
void
register()
Register any application services.
in
ServiceProvider at line 113
void
booting(Closure $callback)
Register a booting callback to be run before the "boot" method is called.
in
ServiceProvider at line 121
void
booted(Closure $callback)
Register a booted callback to be run after the "boot" method is called.
in
ServiceProvider at line 129
void
callBootingCallbacks()
Call the registered booting callbacks.
in
ServiceProvider at line 139
void
callBootedCallbacks()
Call the registered booted callbacks.
in
ServiceProvider at line 156
protected void
mergeConfigFrom(string $path, string $key)
Merge the given configuration with the existing configuration.
Top-level keys use shallow merge (app values override package defaults). Keys declared in mergeableOptions() get an additional one-level-deeper merge so the app can add entries to collection arrays (stores, connections, guards, etc.) without losing the package's default entries.
Called later, the merge changes configuration every request in the worker shares.
in
ServiceProvider at line 189
protected array
mergeableOptions(string $name)
Get configuration arrays whose entries should be merged by name.
Override this in a package service provider to list nested configuration arrays whose entries are named. Application entries replace package entries with the same name, while package entries not defined by the application remain. Nested arrays not listed here are replaced completely.
in
ServiceProvider at line 199
protected void
replaceConfigRecursivelyFrom(string $path, string $key)
Replace the given configuration with the existing configuration recursively.
Called later, the change reaches configuration every request in the worker shares.
in
ServiceProvider at line 222
protected void
configureUsing(Closure $callback)
Change the configuration with a callback, again whenever a worker rebuilds its configuration.
Use it for values computed from other configuration. Configuration can depend on the worker environment, so the callback is replayed against the rebuilt configuration rather than its first result kept. Cached configuration already holds the result, so the callback does not run.
Called later, the change reaches configuration every request in the worker shares, and is not replayed.
in
ServiceProvider at line 235
protected void
loadRoutesFrom(string $path)
Load the given routes file if routes are not already cached.
in
ServiceProvider at line 245
protected void
loadViewsFrom(array|string $path, string $namespace)
Register a view file namespace.
in
ServiceProvider at line 263
protected void
loadViewComponentsAs(string $prefix, array $components)
Register the given view components with a custom prefix.
in
ServiceProvider at line 279
protected void
loadTranslationsFrom(string $path, string|null $namespace = null)
Register a translation file namespace.
in
ServiceProvider at line 289
protected void
loadJsonTranslationsFrom(string $path)
Register a JSON translation file path.
in
ServiceProvider at line 299
protected void
loadMigrationsFrom(array|string $paths)
Register database migration paths.
in
ServiceProvider at line 313
protected void
callAfterResolving(string $name, Closure $callback)
Setup an after resolving listener, or fire immediately if already resolved.
in
ServiceProvider at line 325
protected void
publishesMigrations(array $paths, mixed $groups = null)
Register migration paths to be published by the publish command.
in
ServiceProvider at line 342
protected void
publishes(array $paths, mixed $groups = null)
Register paths to be published by the publish command.
in
ServiceProvider at line 356
protected void
ensurePublishArrayInitialized(string $class)
Ensure the publish array for the service provider is initialized.
in
ServiceProvider at line 366
protected void
addPublishGroup(string $group, array $paths)
Add a publish group / tag to the service provider.
in
ServiceProvider at line 381
static array
pathsToPublish(string|null $provider = null, string|null $group = null)
Get the paths to publish.
in
ServiceProvider at line 398
static protected array|null
pathsForProviderOrGroup(string|null $provider, string|null $group)
Get the paths for the provider or group (or both).
Returns null when no filter is specified, allowing caller to fall back to all paths. Returns empty array when a filter is specified but not found.
in
ServiceProvider at line 418
static protected array
pathsForProviderAndGroup(string $provider, string $group)
Get the paths for the provider and group.
in
ServiceProvider at line 430
static array
publishableProviders()
Get the service providers available for publishing.
in
ServiceProvider at line 438
static array
publishableMigrationPaths()
Get the migration paths available for publishing.
in
ServiceProvider at line 446
static array
publishableGroups()
Get the groups available for publishing.
in
ServiceProvider at line 454
static bool
addProviderToBootstrapFile(string $provider, string|null $path = null)
Add a provider to the bootstrap provider configuration file.
in
ServiceProvider at line 492
static bool
removeProviderFromBootstrapFile(string|array $providersToRemove, string|null $path = null, bool $strict = false)
Remove a provider from the bootstrap provider file.
in
ServiceProvider at line 534
protected void
optimizes(string|null $optimize = null, string|null $clear = null, string|null $key = null)
Register commands that should run on "optimize".
in
ServiceProvider at line 550
protected void
reloads(string $reload, string|null $key = null)
Register commands that should run on "reload".
in
ServiceProvider at line 560
protected string
getProviderKey(string|null $key = null)
Get a short descriptive key for the current service provider.
in
ServiceProvider at line 582
void
commands(array $commands)
Register the package's custom Artisan commands.
The commands are added to every later console application the worker creates.
in
ServiceProvider at line 599
protected void
aspects(string|array $aspects)
Register AOP aspects.
Reads $classes and $priority from each aspect class's default
property values via reflection (without instantiating the aspect).
Must be called during register(), before boot().
in
ServiceProvider at line 618
protected void
classMap(array $map)
Register class map overrides.
Applies entries to the Composer autoloader immediately. Rejects loaded targets from a different source; repeating the same override is safe. Must be called during register(), before the target class is autoloaded.
in
ServiceProvider at line 627
static protected void
replaceBootstrapProviderFile(string $path, string $content)
Replace the bootstrap provider file without exposing partial contents.
in
ServiceProvider at line 649
static DefaultProviders
defaultProviders()
Get the default providers for a Hypervel application.
in
ServiceProvider at line 657
static void
flushState()
Flush all static state.
at line 149
protected void
registerWebSocketServer()
Register the Reverb WebSocket server in the server configuration.
Appends a WebSocket server entry to server.servers so Swoole binds
the Reverb port alongside the main HTTP server. This is an intentional
register-time config mutation: it must run before ServerStartCommand
reads server.servers and before workers or coroutines exist. Do not
move this into boot/runtime code; config is process-global in Swoole
workers. This replaces Laravel Reverb's standalone ReactPHP server.
at line 183
protected array
resolveServerSettings(TlsOptions $tls)
Resolve Swoole settings for the Reverb server.
TLS uses the server package's options instead of package-owned certificate discovery.
at line 197
protected void
registerReverbRouter()
Register the isolated Reverb router singleton.
Routes are registered later in boot() so config overrides (e.g. path prefix) are applied before route registration.
at line 208
protected void
registerRoutes(ReverbRouter $router)
Register all Reverb routes on the isolated router.
at line 230
void
boot()
Bootstrap any application services.
at line 260
protected void
registerPeriodicTasks()
Register periodic tasks for connection cleanup and table monitoring.
at line 285
protected void
registerPipeMessageListener()
Register the pipe message listener for intra-node broadcast fan-out.
at line 379
protected void
registerShutdownHandler()
Register the graceful shutdown handler for worker exit.
Runs during onWorkerExit while the event loop is still active, so coroutine-dependent operations (Redis pub/sub for scaling, webhook dispatch) still work. This fires before WORKER_EXIT is resumed, meaning periodic timers and the Redis subscriber are still running — the drain does not conflict with them.
at line 417
void
drainConnections()
Drain all active WebSocket connections on this worker.
Atomically takes each connection from the registry, runs Reverb cleanup (channel unsubscribe, slot release, presence events), then closes the transport with a 1001 Going Away close code.
at line 447
protected void
reportShutdownFailure(Throwable $throwable)
Report a shutdown failure without interrupting remaining cleanup.
at line 455
protected void
disconnectScalingSubscriber()
Disconnect the Redis pub/sub subscriber if scaling is enabled.
at line 471
protected void
scheduleWebhookFlushes()
Schedule flush jobs for webhook batches that need one.
Runs every minute and when a worker exits. It picks up batches whose flush job crashed and buffered events whose flush was never scheduled, while the buffer's scheduling key lets only one worker dispatch each flush.
at line 506
protected void
checkTableCapacity()
Check Swoole Table capacity and log a warning if nearing the limit.
at line 528
protected void
checkSwooleTableUsage(Table $table, string $messageFormat)
Check a Swoole Table's capacity and log a warning if above 80%.