Почему у широковещательного канала laravel есть префикс по умолчанию?

в настоящее время я работаю над мобильным приложением, используя react native, а в качестве серверной части я использую Laravel.

В качестве клиентской библиотеки каналов на стороне клиента я использую Pusher

Так выглядит мой маршрут канала в бэк-энде

Broadcast::channel('conversation.{message_id}', function ($user,$id) {
    return true;
});

Я могу успешно транслировать, но на консоли отладки толкателя я заметил, что к маршруту добавлен префикс (частный-).

введите описание изображения здесь Вот как я слушаю событие

                const pusher = new Pusher('XXXX', {
                    cluster: 'eu',
                    authEndpoint: 'http:backend.test/api/broadcasting/auth',
                    auth: {
                        headers: {
                            Authorization: `Bearer `+token,
                            Accept: 'application/json',
                        },
                    },
                });
                const channel = pusher.subscribe('private-conversation.7');
                channel.bind('App\\Events\\MessageSent', function (data) {
                    console.log("event")
                    console.log(data);
                });

Как вы можете видеть в моем коде, я подписываюсь на приватный диалог. 7, консоль отладки pusher показывает, что клиент подписан на канал успешно, но проблема в том, что клиент не слушал события, когда я создаю настраиваемое событие в pusher и установите обсуждение.7 в качестве имени канала (я удалил префикс private-), событие сработало успешно.

введите описание изображения здесь

Есть предложения, пожалуйста?


person Zakaria Mountassir    schedule 23.02.2021    source источник


Ответы (1)


Это соглашение, используемое для разделения частного, общедоступного канала и канала присутствия.

Когда вы подписываетесь на канал с префиксом private-, потребуется процесс аутентификации.

Laravel автоматически добавит префикс private- к имени канала при трансляции.

/**
 * Get the channels the event should broadcast on.
 *
 * @return \Illuminate\Broadcasting\PrivateChannel
 */
public function broadcastOn()
{
    return new PrivateChannel('orders.'.$this->order->id);
}

Вот справочные документы:

https://pusher.com/docs/channels/using_channels/private-channels

person kingshark    schedule 24.02.2021