我已经配置了 Laravel 使用 pusher 来发送 Laravel Echo 事件,但是我从 artisan console 发送的事件无法到达 pusher。我从 pusher debug console 发送的事件正常工作,因此前端部分没有问题。难道 vagrant VM 会对此产生干扰?
我的 .env 文件:
观察者模式在
当我运行控制台命令以创建新消息时,终端会显示以下内容:
注意:大多数名称都是机密的,因此我使用了像eventname、channel等占位符,但我希望相关信息都在其中。
谢谢!
我的 .env 文件:
QUEUE_DRIVER=sync
...
PUSHER_KEY=<key>
PUSHER_SECRET=<secret>
PUSHER_APP_ID=<app_id>
我的broadcasting.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)];
}
}
该事件由观察者类观察模型的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等占位符,但我希望相关信息都在其中。
谢谢!