Трансляция События с толкателем в разработке пакета laravel - PullRequest
0 голосов
/ 06 мая 2020

Я создаю пакет laravel, который требует прослушивания веб-сокета, когда событие запускается для обновления на интерфейсе vue. Как мне зарегистрировать широковещательную службу у поставщика услуг пакетов для прослушивания каналов в моих файлах маршрутов. Я копал несколько дней, но до сих пор не получил ответа.

Это моя функция загрузки в моем поставщике услуг пакетов.

public function boot()
    {
        if ($this->app->runningInConsole()){
            $this->registerPublishing();
        }

        $this->registerResources();
        $this->registerRoutes();
        $this->assetPublishing();

        // $this->app->register(SeedServiceProvider::class);
        // $this->registerSeedsFrom(__DIR__.'/../database/seeds');
        $this->registerBroadcastRoutes();

    }

И вот как я регистрирую свою широковещательную службу в способ ниже. Я также пробовал без атрибута namespace.

    public function registerBroadcastRoutes()
    {
        Broadcast::routes(['namespace' => 'Midstackdev\TicketingApp\Http\Controllers']);

        require __DIR__.'/../routes/channels.php';
    }

Мое событие в пакете

<?php

namespace Midstackdev\TicketingApp\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
use Qodehub\TicketingApp\RequestChat;

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

    public $chat;

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

    public function broadcastWith()
    {
        return [
            'message' => $this->chat
        ];
    }


    public function broadcastAs()
    {
        return 'newChatMessage';
    }

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

Мои маршруты / каналы. php

<?php

use Illuminate\Support\Facades\Broadcast;


Broadcast::channel('chat', function () {
    return true;
});

My js файл для прослушивания


Echo.channel('chat')
.listen('newChatMessage', (e) => {
    console.log(e)
    console.log(message)
})

Кто-нибудь может мне помочь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...