我想用BroadcastManager注册一个自定义广播器,而不必更改内部框架代码......
现在我必须在Illuminate\Broadcasting\BroadcasterManager课堂上做这样的事情:
protected function createMyCustomDriver(array $config) {
// return instance....
}
Run Code Online (Sandbox Code Playgroud)
但是有一种扩展方法,但我不知道它是否适用于这个用例或如何使用它...
目标是使用Broadcaster实现,该实现使用ZMQ将这些广播事件发送到WebSocket php服务器实例.
任何帮助赞赏!
编辑:链接到api doc http://laravel.com/api/5.1/Illuminate/Broadcasting/BroadcastManager.html
edc*_*dcs 10
您需要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;
});
}
Run Code Online (Sandbox Code Playgroud)
所有这一切就是将你的广播驱动程序(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'
]
],
Run Code Online (Sandbox Code Playgroud)
您会注意到驱动程序名称与服务提供程序extend调用中的名称相同.您可以实际调用任何您喜欢的连接,并且可以添加额外的参数,如果需要,可以将这些参数传递给服务提供者.
之后,您的自定义广播器已注册并可以使用!