configureMessageLogger() ->configureConnectionLogger() ->registerEchoRoutes() ->startWebSocketServer(); } protected function configureMessageLogger() { app()->singleton(MessageLogger::class, function() { return (new MessageLogger($this->output)) ->enable(config('app.debug')) ->verbose($this->output->isVerbose()); }); return $this; } protected function configureConnectionLogger() { app()->bind(ConnectionLogger::class, function() { return (new ConnectionLogger($this->output)) ->enable(config('app.debug')) ->verbose($this->output->isVerbose()); }); return $this; } protected function registerEchoRoutes() { WebSocketRouter::echo(); return $this; } protected function startWebSocketServer() { $this->info("Starting the WebSocket server on port {$this->option('port')}..."); $routes = WebSocketRouter::getRoutes(); /** 🎩 Start the magic 🎩 */ (new WebSocketServer($routes)) ->setHost($this->option('host')) ->setPort($this->option('port')) ->setConsoleOutput($this->output) ->run(); } }