Laravel Broadcasting, я не могу получить событие в приложении Java Script

Я использую толкатель в моем проекте. В консоли отладки показывают событие, когда я хочу подключиться к каналу в панели мониторинга, отображать состояние отключения, и я не получаю событие в приложении javascript. JS код:

Echo.private(`order.${orderId}`)
    .listen('NewChat', (e) => {
        console.log(e.message);
    }
);

Конфигурация трансляции:

PUSHER_APP_ID=625***
PUSHER_APP_KEY=bcd15f3d3c6*******
PUSHER_APP_SECRET=c8e7e09d21********
PUSHER_APP_CLUSTER=ap2

bootstrap.js:

import Echo from 'laravel-echo'

window.Pusher = require('pusher-js');

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'bcd15f3d3***********',
    cluster: 'ap2',
    encrypted: false
});

событие:

public function broadcastOn()
{
    return new PrivateChannel('order.'.$this->order_id);
}

канал:

Broadcast::channel('order.{orderId}', function () {
    return true;
});

состояние отладки консоли

1 ответ

У меня нет никакого реального опыта с Laravel в сочетании с толкачом, но я вижу следующее:

Broadcast::channel('order.{orderId}',

{orderId} не будет переведено в значение переменной. Тебе нужно {$orderId}, Кроме того, делать это в одной строке в кавычках не получится, потому что она просто напечатает {$orderId}так что вам нужны двойные кавычки.

Попробуйте следующее:

Broadcast::channel("order.{$orderId}",

Может быть, это решит вашу проблему, а может и нет.

Если нет, вы уверены private(order.${orderId}) использует правильный идентификатор? Проверить, если return new PrivateChannel('order.'.$this->order_id); использует право $this->order_id,

Другие вопросы по тегам