Я просматриваю это руководство по Знакомство с Laravel Echo. Вещание работает безупречно. Каждый раз, когда я выполняю команду php artisan chat:message "something"
. Событие запускается и данные хранятся в базе данных. Но перейдем к Laravel Echo. Я много пробовал, но никуда не пойду. Я поместил Echo в /js/app.js
, но в документах упоминается, что /js/bootstrap.js
. Поскольку я следую руководству, я поместил его в /js/app.js
. Эхо не показывает данные в журнале. Я использую ubuntu
.
Тестовое событие:
class TestEvent implements ShouldBroadcast
{
use InteractsWithSockets, SerializesModels;
public $message;
public $user;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($user, $message)
{
//
$this->user = $user;
$this->message = $message;
}
/**
* Get the channels the event should broadcast on.
*
* @return Channel|array
*/
public function broadcastOn()
{
return "chat-room";
}
}
Отправить код команды чата:
class SendChatMessage extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'chat:message {message}';
protected $description = 'Send chat message.';
public function handle()
{
// Fire off an event, just randomly grabbing the first user for now
$user = \App\User::first();
$message = \App\Message::create([
'user_id' => $user->id,
'content' => $this->argument('message')
]);
event(new \App\Events\TestEvent($message, $user));
}
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
}
Laravel Echo:
import Echo from "laravel-echo"
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'my-key'
});
window.Echo.channel('chat-room')
.listen('TestEvent', (e) => {
console.log(e.user, e.message);
});
еще одна вещь, когда я отправляю событие из толкателя. Pusher умеет правильно его отправлять.