我有推送器应用程序,然后我尝试通过 laravel 事件向推送器发送消息,这是我的事件:
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class NewOrder
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $email;
public $message;
public function __construct($email)
{
$this->email = $email;
$this->message = "New order from {$email}, please check.";
//
}
public function broadcastOn()
{
return ['new-order'];
}
}
然后我尝试用路由测试来测试它,
Route::get('test', function () {
event(new App\Events\NewOrder('John'));
return "Event has been sent!";
});
我的推送器配置已经像我的推送器的帐户配置一样配置了,但是在访问 /test
之后,推送器调试控制台没有显示任何内容。
'default' => env('BROADCAST_DRIVER', 'pusher'),
'connections' => [
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
// 'cluster' => 'ap1',
'encrypted' => true,
],
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
],
'log' => [
'driver' => 'log',
],
'null' => [
'driver' => 'null',
],
],
];
我不知道从 laravel 应用程序看到推送者的日志,任何人都可以帮助我吗? 我正在使用 Laravel 5.5
最佳答案
我认为问题出在您的事件类声明上,您应该实现 ShouldBroadcastNow
,因为它会立即触发事件并且不需要队列实现。默认情况下,您需要设置一个队列,然后运行该队列来触发事件。
use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
class NewOrder implements ShouldBroadcastNow
{
....do your stuff....
}
还有结帐this很棒的播放列表,这肯定会解决您的所有问题
关于php - laravel 事件不发送到推送器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50579162/