Вещание событий Pusher и Laravel 5.3

Пытаюсь использовать Laravel 5.3 с толкателем, но, похоже, в моем коде он работает неправильно.

Мой .env правильный

PUSHER_APP_ID= myappid
PUSHER_KEY= mykey
PUSHER_SECRET= mysecret

Это мои настройки "толкателя" в broadcasting.php.

    'pusher' => [
        'driver' => 'pusher',
        'key' => env('PUSHER_KEY'),
        'secret' => env('PUSHER_SECRET'),
        'app_id' => env('PUSHER_APP_ID'),
        'options' => [
          'cluster' => 'eu',
          'encrypted' => true,
        ],
    ],

Я создал событие, вот оно

<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class ProposalEvent implements ShouldBroadcast
{
    use InteractsWithSockets, SerializesModels;

    public $data;

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

/**
 * Get the channels the event should broadcast on.
 *
 * @return Channel|array
 */
public function broadcastOn()
{
    return ['test-channel'];
    // return new PrivateChannel('test-channel');
    // return new PresenceChannel('test-channel');
}
}

мой javascript

Pusher.logToConsole = true;

var pusher = new Pusher("mykey", {
  cluster: 'eu',
  encrypted: true
});
var channel = pusher.subscribe('test-channel');
channel.bind('App\\Events\\ProposalEvent', function(data) {
  alert(data);
});

и, наконец, на мой взгляд

event(new App\Events\ProposalEvent('some data'));

к сожалению, это не работает для меня, но когда я использую pusher- > триггер вот так, без события, он работает нормально, и я вижу сообщение в консоли отладки pusher

$options = array(
  'cluster' => 'eu',
  'encrypted' => true
);
$pusher = new Pusher(
  'mykey',
  'mysecret',
  'myid',
  $options
);

$data['message'] = 'some data';
$pusher->trigger('test-channel', 'my-event', $data);

Я искал решение в документации Laravel и других ресурсах. В stackoverflow есть вопросы с такой же проблемой, но ответа нет. Буду признателен, если кто-нибудь сможет мне помочь, потому что я не могу найти решение уже несколько дней.


person Elcin Hasanov    schedule 25.11.2016    source источник


Ответы (3)


Я застрял в той же ситуации и обнаружил, что не использую очередь!

В документации написано

Перед трансляцией событий вам также потребуется настроить и запустить прослушиватель очереди. Вся трансляция событий выполняется с помощью заданий, поставленных в очередь, поэтому время отклика вашего приложения серьезно не зависит.

Я удалил файл config/queue.php раньше, так как думал, что не использую его. Может быть, вы делаете то же самое, что и я, или у вас проблемы с очередью.

person Ian Brison    schedule 27.06.2017

Попробуйте передать учетные данные пушера напрямую через config/broadcasting.php

Это сработало для меня.

'default' =>  'pusher',
'connections' => [

    'pusher' => [
        'driver' => 'pusher',
        'key' => '***',
        'secret' => '**',
        'app_id' => '**',
        'options' => [
        ],
    ],
],
enter code here
person Mina William    schedule 22.02.2017

запуск события в представлениях является ошибкой, когда страница загружается, сначала выполняется php, а затем загружается js, что означает, что вы запустили событие с php до того, как js listner отобразит ошибку, это может быть первый случай, второй случай заключается в том, что вы не не загружен https://curl.haxx.se/docs/caextract.html если вы зашли на php.ini и в [curl] вы найдете что-то вроде curl-info, раскомментируйте его и укажите путь к файлу culr

person ali filali    schedule 26.07.2019