2015-09-30 2 views
1

Я хочу зарегистрировать пользовательский вещатель с BroadcastManager без изменения внутренней код фреймворка ...Laravel - Как зарегистрировать пользовательский вещательной

Теперь я должен сделать что-то подобное в Illuminate\Broadcasting\BroadcasterManager классе:

protected function createMyCustomDriver(array $config) { 
    // return instance.... 
} 

Существует расширить метод, однако, но я не знаю, если это Мент для этого случая использования или как использовать его ...

цель состоит в том, чтобы использовать реализацию Broadcaster, который использует ZMQ для отправки эти транслируемые события в WebSocke t php server.

Любая помощь оценена!

редактировать: Ссылка на апи документ http://laravel.com/api/5.1/Illuminate/Broadcasting/BroadcastManager.html

ответ

7

Вам необходимо расширить Illuminate\Broadcasting\BroadcastManager\BroadcastManager с помощью поставщика услуг. Это очень похоже на добавление пользовательского охранника, но вот супер простой пример:

Создание нового поставщика услуг, я назвал руднику BroadcastServiceProvider, и добавьте следующий к boot методе:

/** 
* Bootstrap the application services. 
* 
* @param BroadcastManager $broadcastManager 
*/ 
public function boot(BroadcastManager $broadcastManager) 
{ 
    $broadcastManager->extend('slack', function (Application $app, array $config) { 
     return new Slack; 
    }); 
} 

All то есть добавляет ваш широковещательный драйвер (класс, который реализует интерфейс Illuminate\Contracts\Broadcasting\Broadcaster, который в моем примере равен Slack) менеджеру вещания с именем slack (вы можете позвонить своему вещателю, что угодно).

Обязательно добавьте этого поставщика услуг в ваш конфигурационный файл app.php.

Затем в конфигурационном файле broadcasting.php добавьте новый драйвер в качестве подключения. Шахта выглядит примерно так:

'connections' => [ 

    'pusher' => [ 
     'driver' => 'pusher', 
     'key' => env('PUSHER_KEY'), 
     'secret' => env('PUSHER_SECRET'), 
     'app_id' => env('PUSHER_APP_ID'), 
    ], 

    'redis' => [ 
     'driver' => 'redis', 
     'connection' => 'default', 
    ], 

    'log' => [ 
     'driver' => 'log', 
    ], 

    'slack' => [ 
     'driver' => 'slack' 
    ] 

], 

Вы заметите, что имя драйвера такое же, как то, что в поставщика услуг extend вызова. Вы можете вызвать соединение, которое вам действительно нравится, и вы можете добавить дополнительные параметры, которые будут переданы поставщику услуг, если они вам понадобятся.

После этого ваша пользовательская вещательная компания зарегистрирована и готова к использованию!

+0

Это больше не работает. $ app печально передано BroadcastManager :: __ construct(). –

+0

ОК, мой плохой. Это не работает в Люмене. Вероятно, он все еще работает в Ларавеле. –

Смежные вопросы