Я использую Laravel 5.2 и php 7. Я тестирую это в локальной среде Mac OSX. У меня нет проблем с тем, чтобы пинговать другие сервисы или делать запросы с помощью php. Я настроил свое приложение, отредактировав широковещательные.php и .env со своими данными API.
broadcasting.php
'default' => env('BROADCAST_DRIVER', 'pusher'),
'connections' => [
'pusher' => [
'driver' => 'pusher',
'key' => env('mykey'),
'secret' => env('mysecret'),
'app_id' => env('myappid'),
],
...
и в .env
...
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=redis
BROADCAST_DRIVER=pusher
PUSHER_KEY=mykey
PUSHER_SECRET=mysecret
PUSHER_APP_ID=myappid
...
Я создал TestEvent так
<?php
namespace App\Events;
use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class TestEvent extends Event implements ShouldBroadcast
{
use SerializesModels;
public $data;
public function __construct()
{
$this->data = array(
'power'=> '10'
);
}
public function broadcastOn()
{
return ['test_channel'];
}
}
Затем я призываю на событие, как так
Event::fire(new TestEvent());
Событие обнаруживается и обрабатывается в Redis
[2016-02-04 10:06:18] Processed: Illuminate\Broadcasting\BroadcastEvent
[2016-02-04 10:08:44] Processed: Illuminate\Broadcasting\BroadcastEvent
[2016-02-04 10:11:14] Processed: Illuminate\Broadcasting\BroadcastEvent
[2016-02-04 10:11:59] Processed: Illuminate\Broadcasting\BroadcastEvent
[2016-02-04 10:14:22] Processed: Illuminate\Broadcasting\BroadcastEvent
[2016-02-04 11:17:04] Processed: Illuminate\Broadcasting\BroadcastEvent
[2016-02-04 11:38:14] Processed: Illuminate\Broadcasting\BroadcastEvent
Но при просмотре консоли отладки в пушере ничего не появляется. Таким образом, кажется, что событие по какой-то причине никогда не отправляется в толкач. Я также проверил настройки часового пояса, чтобы убедиться, что это не проблема. Нет ошибок в моем файле журнала laravel при трансляции события.
Как я могу решить эту проблему? Есть ли хороший способ отладки и посмотреть, есть ли на самом деле запрос на отправку?
Это может не решить проблему, и, возможно, вы изменили свои данные для вопроса, но если ваш .env
это так:
PUSHER_KEY=mykey
PUSHER_SECRET=mysecret
PUSHER_APP_ID=myappid
Разве код ваших учетных данных не должен выглядеть так:
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_KEY'),
'secret' => env('PUSHER_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
],
Это ссылка на значение в вашем коде, а не ключ!
Других решений пока нет …