publishes([ __DIR__.'/../config/websockets.php' => base_path('config/websockets.php'), ], 'config'); $this->registerRouteMacro(); $this->registerDashboardGate(); $this->loadViewsFrom(__DIR__.'/../resources/views/', 'websockets'); $this->commands([ Console\StartWebSocketServer::class, ]); Event::subscribe(EventSubscriber::class); } public function register() { $this->mergeConfigFrom(__DIR__.'/../config/websockets.php', 'websockets'); $this->app->singleton('websockets.router', function() { return new Router(); }); $this->app->singleton(ChannelManager::class, function() { return new ChannelManager(); }); $this->app->singleton(ClientProvider::class, function() { return app(config('websockets.client_provider')); }); } protected function registerRouteMacro() { Route::macro('websocketsDashboard', function($prefix = 'websockets') { Route::prefix($prefix)->namespace('\\')->middleware(Authorize::class)->group(function() { Route::get('/', ShowDashboard::class); Route::post('auth', AuthenticateDashboard::class); Route::post('event', SendMessage::class); }); }); } protected function registerDashboardGate() { Gate::define('viewWebSocketsDashboard', function ($user = null) { return app()->environment('local'); }); } }