Почему я не получаю широковещательное сообщение Laravel Pusher? - PullRequest
0 голосов
/ 10 декабря 2018

Моя трансляция событий выглядит так:

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

    public $username;

    public $message;

    public function broadcastAs()
    {
        return 'my-event';
    }

    public function __construct($username)
    {
        $this->username = $username;
        $this->message = "Order status by {$username} was changed";
    }

    public function broadcastOn()
    {

        return ['my-event'];
    }
}

Событие вызова, например:

Route::get('/', function () {
    OrderStatusUpdate::dispatch('Nick');
    return "Event has been sent!";
});

На стороне клиента:

 var pusher = new Pusher('018814b79958ee4f2ad1d', {
      cluster: 'eu',
      forceTLS: true
    });

    var channel = pusher.subscribe('my-event');
    channel.bind('my-event', function(data) {
      alert(JSON.stringify(data));
    });

Все .env настройки верны!

Как видите, я использую настройки Laravel по умолчанию и название канала.Но сообщение приходит с ошибкой на сервере Pusher.Но я не получаю их на HTML-странице, код JS показан сверху.

1 Ответ

0 голосов
/ 10 декабря 2018

Позвольте мне объяснить со стороны клиента:

var channel = pusher.subscribe('order');
    channel.bind('OrderStatusUpdate', function(data) {
      alert(JSON.stringify(data));
    });

order идентификатор канала OrderStatusUpdate имя события Event

Это значит, что сервер должен быть:

public function broadcastAs()
{
  return 'OrderStatusUpdate'; // Event name
}

public function broadcastOn()
{

  return ['order'];
}

Но я не уверен насчет синтаксиса этого массива: return ['order'];, попробуйте вместо этого:

public function broadcastOn()
{

 return new Channel("order");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...