I try get event in laravel. 1)Call Event:
broadcast(new MessagePosted($message, $user))->toOthers();
2) MessagePosted:
public function __construct(Message3 $message, User $user)
{
$this->message=$message;
$this->user=$user;
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new Channel('chatroom');
}
Fix .env:
BROADCAST_DRIVER=pusher
PUSHER_APP_ID=from https://dashboard.pusher.com/
PUSHER_APP_KEY= from https://dashboard.pusher.com/
PUSHER_APP_SECRET= from https://dashboard.pusher.com/
PUSHER_CLUSTER=en
Add in bootstrap.js:
import Echo from 'laravel-echo'
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
encrypted: true
});
Listener on blade:
mounted() {
this.echo.join('chatroom')
.here()
.joining()
.leaving()
.listen('MessagePosted', (e) => {
console.log(e);
console.log("messages get!")
});
},
For some reason, the event does not work. In file MessagePosted all work (check in dump).