php - laravel 事件未发送到推送器
问题描述
我有推送器应用程序,然后我尝试通过 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!";
});
我的 pusher 配置已经像我的 pusher 的帐户配置一样配置,但是在 access 之后/test
,pusher 调试控制台没有显示任何内容。
'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....
}
并查看这个惊人的播放列表,这肯定会解决您的所有问题
推荐阅读
- r - 使用 quadprog 包签署错误/反转结果
- python - 如何在不通过扬声器播放的情况下将 mp3 或 wav 文件直接播放到我自己的麦克风中?
- parsing - 使用 Bison 识别特定的语法错误
- python - 如何更新函数内的变量?
- microsoft-teams - 正确实现 ms 团队应用程序中的注销功能
- python - 无法修复 Django 中的迁移冲突
- javascript - 使用 React Router 切换页面时 JQuery 未触发
- python - 手写文本识别模型
- python - 从数据框列中提取值并将它们插入行
- python - Python - 意外令牌'
' '