我已经设置Laravel使用pusher为Laravel Echo发送事件,但是我从工匠控制台发射的事件没有达到推动力。我从推送器调试控制台发出的事件工作正常,所以前端部分没问题。流浪汉VM会干扰它吗?
我的.env文件
QUEUE_DRIVER=sync
...
PUSHER_KEY=<key>
PUSHER_SECRET=<secret>
PUSHER_APP_ID=<app_id>
我的broadcast.php
'default' => env('BROADCAST_DRIVER', 'pusher'),
...
'connections' => [
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_KEY'),
'secret' => env('PUSHER_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => 'eu',
'encrypted' => true
],
],
...
]
事件:
class NewMessage implements ShouldBroadcast
{
public function broadcastOn()
{
return [new Channel('chat.'.$this->conversation->id)];
}
}
该事件是从Observer类触发的,该类观察模型created
事件。
public function created(Chat\Message $message)
{
event(new NewMessage($message));
}
观察员在AppServiceProvider
注册
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
Message::observe(MessageObserver::class);
}
}
当我运行创建新消息的控制台命令时,终端显示:
php artisan chat:broadcast asdasd
[2016-12-15 16:26:44] local.INFO: Broadcasting [eventname] on channels [channel] with payload: {...}
注意:大多数名称都是保密的,所以我使用了eventname,channel等占位符,但我希望有相关的信息。
谢谢!
确保.env
文件中的BROADCAST_DRIVER设置为pusher,如下所示
BROADCAST_DRIVER=pusher
并在broadcasting.php
修改药水数组,如下面的代码
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_KEY'),
'secret' => env('PUSHER_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
//leave these empty in your code
],
],`
保存这些更改并运行您的laravel服务器我希望这对您有用... !!
在广播任何事件之前,您首先需要注册App \ Providers \ BroadcastServiceProvider。在新的Laravel应用程序中,您只需要在config / app.php配置文件的providers数组中取消注释此提供程序。
/*
* Application Service Providers...
*/
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
//App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
.env文件
BROADCAST_DRIVER=pusher
PUSHER_APP_ID=app_id
PUSHER_APP_KEY=auth-key
PUSHER_APP_SECRET=secret
PUSHER_APP_CLUSTER=cluster
你可以像这样在控制器中触发事件
broadcast(new NewMessage($message));
你可以运行php artisan config:cache
以确保