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.
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.
Flush any buffered webhook events to the queue.
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%.
Recover stale webhook batch processing keys from crashed flush jobs.
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 71
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 154
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.
in
ServiceProvider at line 197
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 205
protected void
replaceConfigRecursivelyFrom(string $path, string $key)
Replace the given configuration with the existing configuration recursively.
in
ServiceProvider at line 230
protected void
loadRoutesFrom(string $path)
Load the given routes file if routes are not already cached.
in
ServiceProvider at line 240
protected void
loadViewsFrom(array|string $path, string $namespace)
Register a view file namespace.
in
ServiceProvider at line 258
protected void
loadViewComponentsAs(string $prefix, array $components)
Register the given view components with a custom prefix.
in
ServiceProvider at line 274
protected void
loadTranslationsFrom(string $path, string|null $namespace = null)
Register a translation file namespace.
in
ServiceProvider at line 284
protected void
loadJsonTranslationsFrom(string $path)
Register a JSON translation file path.
in
ServiceProvider at line 294
protected void
loadMigrationsFrom(array|string $paths)
Register database migration paths.
in
ServiceProvider at line 308
protected void
callAfterResolving(string $name, Closure $callback)
Setup an after resolving listener, or fire immediately if already resolved.
in
ServiceProvider at line 320
protected void
publishesMigrations(array $paths, mixed $groups = null)
Register migration paths to be published by the publish command.
in
ServiceProvider at line 337
protected void
publishes(array $paths, mixed $groups = null)
Register paths to be published by the publish command.
in
ServiceProvider at line 351
protected void
ensurePublishArrayInitialized(string $class)
Ensure the publish array for the service provider is initialized.
in
ServiceProvider at line 361
protected void
addPublishGroup(string $group, array $paths)
Add a publish group / tag to the service provider.
in
ServiceProvider at line 376
static array
pathsToPublish(string|null $provider = null, string|null $group = null)
Get the paths to publish.
in
ServiceProvider at line 393
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 413
static protected array
pathsForProviderAndGroup(string $provider, string $group)
Get the paths for the provider and group.
in
ServiceProvider at line 425
static array
publishableProviders()
Get the service providers available for publishing.
in
ServiceProvider at line 433
static array
publishableMigrationPaths()
Get the migration paths available for publishing.
in
ServiceProvider at line 441
static array
publishableGroups()
Get the groups available for publishing.
in
ServiceProvider at line 449
static bool
addProviderToBootstrapFile(string $provider, string|null $path = null)
Add a provider to the bootstrap provider configuration file.
in
ServiceProvider at line 487
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 529
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 545
protected void
reloads(string $reload, string|null $key = null)
Register commands that should run on "reload".
in
ServiceProvider at line 555
protected string
getProviderKey(string|null $key = null)
Get a short descriptive key for the current service provider.
in
ServiceProvider at line 575
void
commands(array $commands)
Register the package's custom Artisan commands.
in
ServiceProvider at line 591
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 623
protected void
classMap(array $map)
Register class map overrides.
Applies entries to the Composer autoloader immediately. Fails hard if any target class is already loaded. Must be called during register(), before the target class is autoloaded.
in
ServiceProvider at line 631
static protected void
replaceBootstrapProviderFile(string $path, string $content)
Replace the bootstrap provider file without exposing partial contents.
in
ServiceProvider at line 653
static DefaultProviders
defaultProviders()
Get the default providers for a Hypervel application.
in
ServiceProvider at line 661
static void
flushState()
Flush all static state.
at line 145
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 179
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 193
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 204
protected void
registerRoutes(ReverbRouter $router)
Register all Reverb routes on the isolated router.
at line 226
void
boot()
Bootstrap any application services.
at line 256
protected void
registerPeriodicTasks()
Register periodic tasks for connection cleanup and table monitoring.
at line 281
protected void
registerPipeMessageListener()
Register the pipe message listener for intra-node broadcast fan-out.
at line 375
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 413
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 443
protected void
reportShutdownFailure(Throwable $throwable)
Report a shutdown failure without interrupting remaining cleanup.
at line 451
protected void
disconnectScalingSubscriber()
Disconnect the Redis pub/sub subscriber if scaling is enabled.
at line 466
protected void
flushWebhookBuffers()
Flush any buffered webhook events to the queue.
Reduces recovery delay from 60s to immediate by scheduling flush jobs before the worker dies.
at line 494
protected void
checkTableCapacity()
Check Swoole Table capacity and log a warning if nearing the limit.
at line 516
protected void
checkSwooleTableUsage(Table $table, string $messageFormat)
Check a Swoole Table's capacity and log a warning if above 80%.
at line 544
protected void
recoverStaleWebhookBatches()
Recover stale webhook batch processing keys from crashed flush jobs.
Iterates all apps with batching enabled and checks for orphaned processing hashes. If recovered, schedules an immediate flush.