首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未触发Laravel pusher事件

未触发Laravel pusher事件
EN

Stack Overflow用户
提问于 2021-09-06 05:52:53
回答 3查看 137关注 0票数 0

这是我的.env代码->

代码语言:javascript
复制
BROADCAST_DRIVER=pusher
PUSHER_APP_ID=xxxxx
PUSHER_APP_KEY=xxxxx
PUSHER_APP_SECRET=xxxxx
PUSHER_APP_CLUSTER=xxxxx

下面是我的配置代码->

代码语言:javascript
复制
 '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'),
                'useTLS' => true,
                'encrypted' => true,
            ],
        ],

这是我的事件代码->

代码语言:javascript
复制
<?php

namespace App\Events;


use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;

class orderEvent implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public $text;

    public function __construct($text)
    {
        $this->text = $text;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new Channel('fish20');
    }
}

最后,这里是我的测试路线,我从这里触发事件,但实际上没有发生任何事情:( .->

代码语言:javascript
复制
Route::get('/get', function () {
    $text = 'New order received.';
    event(new orderEvent($text));
});

在我的pusher通道的调试控制台上看不到任何触发的事件。

EN

回答 3

Stack Overflow用户

发布于 2021-09-06 15:21:31

我找到解决方案了。由于某种原因,QUEUE_CONNECTION=database在事件中使用队列,而我的队列连接是数据库,所以就像这样,-> QUEUE_CONNECTION=database和我删除了它,并使其同步,以便它获得触发器,并在以后像-> QUEUE_CONNECTION=sync那样将其排队

此外,在事件文件上还有另一种方法,而不是使用ShouldBroadcast -> ShouldBroadcastNow

票数 1
EN

Stack Overflow用户

发布于 2021-09-06 06:40:15

你也需要分享你的客户端代码。

如果您忘记实现客户端代码,您可以阅读有关Broadcasting的官方文档。我还发现了this tutorial,它使用的是Laravel的旧版本,但概念没有太大变化。

票数 0
EN

Stack Overflow用户

发布于 2021-09-06 11:50:39

您应该在路由中使用broadcast(new orderEvent($text));而不是event(new orderEvent($text));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69069691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档