如何在laravel 8中使用presence channel实现EventBroadcast?

问题描述 投票:0回答:0

我对 laravel 事件广播概念很陌生,我有一些不刷新页面的要求,我需要更新 Angular 站点中的数据。我通过使用 pusher 创建了一个存在通道。一旦它被触发,我就在我的队列类中调用我的广播我从 Pusher Debugger 控制台收到一条 API 消息,其中包含触发的数据,直到这部分正常。首先我想知道天气服务器端实现代码和逻辑是否正确,如果错误意味着您可以帮助修复吗?

while executing queue i am triggering my event like below

broadcast(new LiveSyncEventsFromAutomation(['dat' => $converted_duedate ],$primaryId,
                            $data['sss'],$data['ss']));
<?php

namespace App\Events\workflow;

use Config;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Broadcast;
use Illuminate\Support\Facades\Config as FacadesConfig;

class LiveSyncEventsFromAutomation implements ShouldBroadcastNow
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

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

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

    public function broadcastQueue(): string
    {
        //
        return 'liveupdates';
    }


    public function broadcastOn()
    {
        return new PresenceChannel('test'.$this->companyName.$this->orderId.$this->user);
    }

    public function broadcastWith(): array
    {
        return [
   
            'live_details' => $this->field_details
        ];
    }


}

channels.php

Broadcast::channel('test.{companyname}.{jobid}.{userid}', function ($user, $companyname, $jobid, $userid) {
        return true;
});

BroadcastServiceProvider.php

  {
        Broadcast::routes(['middleware'=>'liveUpdates']); //added custom middleware to add authtoken in request object

        require base_path('routes/channels.php');
    }

对于身份验证,我使用单独的路由而不是默认路由

broadcast/auth 
.

我正在进入 Pusher 控制台,就像我的主要疑问是天气这个实现是否正确。如果可能的话,你能简单介绍一下概念吗?

Channel: presence-testSAI411, Event: App\Events\workflow\LiveSyncEventsFromAutomation
laravel websocket broadcast pusher laravel-broadcast
© www.soinside.com 2019 - 2024. All rights reserved.