Я транслирую события с Lumen 5.4 на Pusher. Все отлично работает на моей локальной машине, с PHP V7.0.22. Однако при развертывании моего кода в моем экземпляре Elastic Beanstalk, работающем с той же версией PHP Ничего не произошло.
Вот пример события, с которым я тестирую;
Вызов события
use App\Events\ExampleEvent;
$app->get('/event', function(){
$message = "Hello Haseeb";
event(new ExampleEvent($message));
return "Complete";
});
Пример события
<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\PrivateChannel;
class ExampleEvent extends Event
{
public $message;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($message)
{
$this->message = $message;
}
public function broadcastOn()
{
return new Channel('nai-btana');
}
public function broadcastAs() {
return 'coolest-event-ever';
}
}
Опять же, это прекрасно работает с localhost. Я могу видеть события на консоли отладчика толкателя, а также использовать сообщения на внешнем интерфейсе (Vue). Однако точно такое же событие не запускается из моего экземпляра EB (Linux AMI).
Я использую приведенный ниже скрипт для проверки толкателя.
Тестовый скрипт
$app->get('/event', function(){
error_reporting(E_ALL);
$app_id = env('PUSHER_APP_ID');
$app_key = env('PUSHER_KEY');
$app_secret = env('PUSHER_SECRET');
class MyLogger {
public function log( $msg ) {
print_r( $msg . "<br />" );
}
}
$pusher = new Pusher($app_key, $app_secret, $app_id, array( 'cluster' => 'ap2' ));
$logger = new MyLogger();
$pusher->set_logger( $logger );
$data['message'] = 'hello world';
$result = $pusher->trigger('simple', 'simple', $data);
$logger->log( "---- My Result ---" );
$logger->log( $result );
return "Complete";
});
К сожалению, я получаю одинаковый ответ как на локальном сервере, так и на сервере. 200 ОК
Ответ
Pusher: ->trigger received string channel "simple". Converting to array.
Pusher: create_curl( http://api-ap2.pusher.com:80/apps/674397/events?auth_key=277a5f98b54adff6fbff&auth_signature=13921666bca17192ef8fdb717d086f828428eef41ecbe9b13460e952ab4cf489&auth_timestamp=1546792861&auth_version=1.0&body_md5=93926a8b33af11740f1903f0a7102fbf )
Pusher: trigger POST: {"name":"simple","data":"{\"message\":\"hello world\"}","channels":["simple"]}
Pusher: exec_curl response: Array ( [body] => {} [status] => 200 )
---- My Result ---
1
Complete
Тестовое событие отображается в консоли отладки Pusher. Но то же самое событие не излучается, когда я транслирую через Laravel Event. При использовании Event Broadcasting не возникает никаких ошибок, но также и нет результата.