From ba3a2ad164f9461df1f3fdad3a47cb0e40890ff9 Mon Sep 17 00:00:00 2001 From: Dries Vints Date: Tue, 6 Apr 2021 15:47:54 +0200 Subject: [PATCH] [2.x] Laravel Octane support (#733) * Octane support Co-authored-by: Alex Renoki --- src/Console/Commands/StartServer.php | 19 ++++++++++--------- src/WebSocketsServiceProvider.php | 18 +++++++++++------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/Console/Commands/StartServer.php b/src/Console/Commands/StartServer.php index f9bb71c1ab..a0daec4768 100644 --- a/src/Console/Commands/StartServer.php +++ b/src/Console/Commands/StartServer.php @@ -106,10 +106,11 @@ protected function configureLoggers() */ protected function configureManagers() { - $this->laravel->singleton(ChannelManager::class, function () { - $mode = config('websockets.replication.mode', 'local'); + $this->laravel->singleton(ChannelManager::class, function ($app) { + $config = $app['config']['websockets']; + $mode = $config['replication']['mode'] ?? 'local'; - $class = config("websockets.replication.modes.{$mode}.channel_manager"); + $class = $config['replication']['modes'][$mode]['channel_manager']; return new $class($this->loop); }); @@ -211,9 +212,9 @@ protected function configurePongTracker() */ protected function configureHttpLogger() { - $this->laravel->singleton(HttpLogger::class, function () { + $this->laravel->singleton(HttpLogger::class, function ($app) { return (new HttpLogger($this->output)) - ->enable($this->option('debug') ?: config('app.debug')) + ->enable($this->option('debug') ?: ($app['config']['app']['debug'] ?? false)) ->verbose($this->output->isVerbose()); }); } @@ -225,9 +226,9 @@ protected function configureHttpLogger() */ protected function configureMessageLogger() { - $this->laravel->singleton(WebSocketsLogger::class, function () { + $this->laravel->singleton(WebSocketsLogger::class, function ($app) { return (new WebSocketsLogger($this->output)) - ->enable($this->option('debug') ?: config('app.debug')) + ->enable($this->option('debug') ?: ($app['config']['app']['debug'] ?? false)) ->verbose($this->output->isVerbose()); }); } @@ -239,9 +240,9 @@ protected function configureMessageLogger() */ protected function configureConnectionLogger() { - $this->laravel->bind(ConnectionLogger::class, function () { + $this->laravel->bind(ConnectionLogger::class, function ($app) { return (new ConnectionLogger($this->output)) - ->enable(config('app.debug')) + ->enable($app['config']['app']['debug'] ?? false) ->verbose($this->output->isVerbose()); }); } diff --git a/src/WebSocketsServiceProvider.php b/src/WebSocketsServiceProvider.php index d31f0f2f12..829943e600 100644 --- a/src/WebSocketsServiceProvider.php +++ b/src/WebSocketsServiceProvider.php @@ -80,16 +80,18 @@ protected function registerAsyncRedisQueueDriver() */ protected function registerStatistics() { - $this->app->singleton(StatisticsStore::class, function () { - $class = config('websockets.statistics.store'); + $this->app->singleton(StatisticsStore::class, function ($app) { + $config = $app['config']['websockets']; + $class = $config['statistics']['store']; return new $class; }); - $this->app->singleton(StatisticsCollector::class, function () { - $replicationMode = config('websockets.replication.mode', 'local'); + $this->app->singleton(StatisticsCollector::class, function ($app) { + $config = $app['config']['websockets']; + $replicationMode = $config['replication']['mode'] ?? 'local'; - $class = config("websockets.replication.modes.{$replicationMode}.collector"); + $class = $config['replication']['modes'][$replicationMode]['collector']; return new $class; }); @@ -142,8 +144,10 @@ protected function registerRouter() */ protected function registerManagers() { - $this->app->singleton(Contracts\AppManager::class, function () { - return $this->app->make(config('websockets.managers.app')); + $this->app->singleton(Contracts\AppManager::class, function ($app) { + $config = $app['config']['websockets']; + + return $this->app->make($config['managers']['app']); }); }