我正在使用 Laravel 5.5。我将我的 BROADCAST_DRIVER 设置为“log”,但当我访问链接以触发事件时,什么也没有发生。 laravel.log 文件仍然为空。我已经在 config/app.php 中取消注释了 BroadcastServiceProvider。这是我的代码。
.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=myDatabase
DB_USERNAME=root
DB_PASSWORD=numberPassword
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=database
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
config/app.php
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
app/Events/ReloadTableEvent.php
class ReloadTableEvent implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
protected $coinData;
public function __construct($coinData)
{
$this->coinData = $coinData;
}
public function broadcastWith()
{
return ['coin' => $this->coinData];
}
public function broadcastAs()
{
return 'reload-event';
}
public function broadcastOn()
{
return new Channel('reload-channel');
}
}
app/Http/Controllers/ReloadTableController.php
public function reloadTable()
{
$coin = Coin::take(50)->get();
$event = new ReloadTableEvent($coin);
event($event);
}
我已经执行了以下操作:
- php artisan config:clear
- php artisan cache:clear
- php artisan optimize
- php artisan clear-compiled
- composer update
- composer dump-autoload
但仍然没有效果。请问还有其他方法吗?
更新1:
我还没有使用监听器。当我创建新项目并设置与当前项目相同的选项时,它可以正常工作。
存储/log/laravel.log
[2018-01-08 06:24:02] local.INFO: Broadcasting [reload-event] on channels [reload-channel] with payload:
{
"coin": {
"name": "Test"
},
"socket": null
}