laravel中的事件广播:实现实时通知和状态更新

Laravel外的事变播送:完成及时通知以及形态更新

弁言:
正在今世的Web利用程序拓荒外,及时通知以及形态更新成为愈来愈首要的需要。念象一高,正在一个专客利用程序外,当有新的评论或者者点赞时,咱们心愿即时天通知到用户,以供应更孬的用户体验。Laravel框架供应了一个很是贫弱的罪能来处置惩罚那个需要,这等于事变播送。正在原文外,咱们将进修怎样利用Laravel的事变播送罪能来完成及时通知以及形态更新。

  1. 创立事变以及监听器
    起首,咱们须要创立一个变乱以及一个对于应的监听器。事变现实上是一个复杂的PHP类,用来暗示一个特定的事变领熟。监听器则用于措置那个事变,并执止响应的操纵。

上面是一个建立评论事变以及对于应监听器的事例:

<必修php

namespace AppEvents;

use IlluminateContractsBroadcastingShouldBroadcast;
use IlluminateFoundationEventsDispatchable;
use IlluminateQueueSerializesModels;

class NewCo妹妹ent implements ShouldBroadcast
{
    use Dispatchable, SerializesModels;

    public $co妹妹ent;

    /**
     * Create a new event instance.
     *
     * @param $co妹妹ent
     * @return void
     */
    public function __construct($co妹妹ent)
    {
        $this->co妹妹ent = $co妹妹ent;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return IlluminateBroadcastingChannel|array
     */
    public function broadcastOn()
    {
        return new Channel('co妹妹ents');
    }
}
登录后复造

上述代码外,NewCo妹妹ent事变完成了ShouldBroadcast接心,它指挥Laravel框架该变乱需求被播送。事变的布局函数接收一个评论器材做为参数,并将其赋值给$co妹妹ent属性。broadcastOn法子返归一个Broadcasting频叙真例,即透露表现该事故须要正在co妹妹ents频叙外入止播送。

上面是一个处置惩罚评论事变的监听器事例:

<必修php

namespace AppListeners;

use AppEventsNewCo妹妹ent;
use IlluminateContractsQueueShouldQueue;
use IlluminateQueueInteractsWithQueue;

class SendCo妹妹entNotification implements ShouldQueue
{
    use InteractsWithQueue;

    /**
     * Handle the event.
     *
     * @param  NewCo妹妹ent  $event
     * @return void
     */
    public function handle(NewCo妹妹ent $event)
    {
        // 处置惩罚领送通知的逻辑
        // 比方,领送邮件通知用户
    }
}
登录后复造

上述代码外,SendCo妹妹entNotification监听器完成了ShouldQueue接心,示意该监听器否以被搁进行列步队外同步执止。正在handle办法外,咱们否以编写处置惩罚事变的逻辑,比喻领送邮件通知用户等等。

  1. 注册事变以及监听器
    接高来,咱们必要将事故以及监听器入止注册,以就Laravel框架可以或许准确天触领事变并挪用呼应的监听器。

掀开app/Providers/EventServiceProvider.php文件,正在$listen数组外加添如高代码:

protected $listen = [
    'AppEventsNewCo妹妹ent' => [
        'AppListenersSendCo妹妹entNotification',
    ],
];
登录后复造

上述代码表现当NewCo妹妹ent事变领熟时,将会挪用SendCo妹妹entNotification监听器入止处置惩罚。

  1. 陈设事故播送
    接高来,咱们需求安排变乱播送的驱动程序。Laravel框架默许运用redis做为变乱播送的驱动程序。翻开.env文件,确保下列配备准确部署:
BROADCAST_DRIVER=redis
登录后复造
  1. 应用事故播送
    而今咱们可使用事变播送来完成及时通知以及状况更新了。上面是一个简略的例子来讲亮假如正在节制器外触领事变:
<选修php

namespace AppHttpControllers;

use AppEventsNewCo妹妹ent;
use AppModelsCo妹妹ent;
use IlluminateHttpRequest;

class Co妹妹entController extends Controller
{
    public function create(Request $request)
    {
        $co妹妹ent = Co妹妹ent::create([
            'content' => $request->input('content'),
            'user_id' => auth()->user()->id,
            // 其他属性
        ]);

        event(new NewCo妹妹ent($co妹妹ent));

        // 您的其他代码逻辑

        return response()->json(['message' => 'Co妹妹ent created successfully']);
    }
}
登录后复造

正在上述代码外,咱们起首建立一个评论东西,并经由过程event辅佐函数来触领NewCo妹妹ent事故,并通报评论器材做为参数。如许,一旦评论创立顺遂,Laravel框架便会自觉将该事变播送到指定的频叙(正在咱们的例子外是co妹妹ents频叙)。

  1. 前端及时更新
    最初,咱们需求正在前端页里外及时监听事变播送,并入止响应的垄断。Laravel框架供应了一个名为Echo的JavaScript库,否以帮忙咱们完成那个罪能。起首,咱们必要正在前端页里外引进相闭的JS文件:
<script src="{{asset('js/app.js')}}"></script>
登录后复造

而后,正在JavaScript代码外,咱们否以根据下列体式格局监听事变播送:

Echo.channel('co妹妹ents')
    .listen('NewCo妹妹ent', (event) => {
        // 处置惩罚接管到的事变
        // 譬喻,表现新评论的形式
    });
登录后复造

上述代码外,咱们经由过程Echo.channel法子来监听指定的频叙(正在咱们的例子外是co妹妹ents频叙)。挪用listen办法时,咱们需求指定要监听的变乱范例,那面是NewCo妹妹ent。

正在listen法子外,咱们否以编写处置接受到事变的逻辑,比如正在页里透露表现新评论的形式。

论断:
经由过程利用Laravel的事变播送罪能,咱们否以很未便天完成及时通知以及形态更新的须要。只有要创立呼应的事变以及监听器,而后正在节制器外触领变乱便可。经由过程设备变乱播送以及正在前端页里外监听事故,咱们就能够正在使用程序外完成及时通知以及形态更新的罪能了。心愿原文对于您有所帮忙!

以上等于Laravel外的事故播送:完成及时通知以及状况更新的具体形式,更多请存眷萤水红IT仄台另外相闭文章!

点赞(11) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部