Я использую vuejs и laravel echo для отправки и получения событий, я вижу, как мой код на стороне клиента регистрируется в консоли разработчика.но когда я отправляю событие через консоль или из laravel.
Код клиента не слышен.
Компонент Vuejs
<template>
<card class="flex flex-col items-center justify-center">
<div class="px-3 py-3">
<h1 class="text-center text-3xl text-80 font-light">Test Nova Card</h1>
</div>
</card>
</template>
<script>
export default {
props: ['card'],
mounted() {
console.log('mounted');
this.listen();
},
methods:
{
listen: function () {
console.log('Listen Method')
Echo.channel('test')
.listen('TestEvent', (e) => {
console.log(e);
});
}
}
}
</script>
Событие запускается
namespace Devtropolis\NovaEnvoyerStatus\events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Support\Facades\Log;
class TestEvent implements ShouldBroadcast
{
use InteractsWithSockets, SerializesModels;
public $chatMessage;
/**
* Create a new event instance.
*
* @param $chatMessage
* @param $user
*/
public function __construct($chatMessage)
{
Log::info('message fired');
$this->chatMessage = $chatMessage;
}
/**
* Get the channels the event should broadcast on.
*
* @return Channel|array
*/
public function broadcastOn()
{
return new Channel('test');
}
}
Событие получено в консоли-толкаче
Клиент регистрируется в консоли
и это кодзапуск события
Route::get('/endpoint', function (Request $request) {
Log::info('Starting event');
$message = array([
'user_id' => 1,
'message' => 'message'
]);
event(new TestEvent($message));
return 'dave';
});