I'm very basic at laravel's echo and pusher and I've been facing an issue despite the docs and tutorials. I'm trying to create a real time chat message feature in my website following a youtube video. Excerpts of code from my controller, model, channel and app.js are below respectively:
public function send(Request $request)
{
$user = Auth::user();
$id = Auth::user()->id;
$message = $user->messages()->create([
'user_id' => $id,
'messages' => $request->get('messages')
]);
broadcast(new MessagePosted($message, $user));
return ['status' => 'Message Sent!'];
}
model:
public function broadcastOn()
{
// return ['chatit'];
return new PresenceChannel('chatit');
}
channel:
Broadcast::channel('chatit', function ($user) {
return true;
});
app:
window.Echo.join('chatit')
.listen('MessagePosted', (e) => {
console.log(e)
});
My issue now is that if i return chatit (which i've commented) in my model, and change join to channel, i get to see the result of console.log, but when i use the presence channel instead, and use join in app.js, i only get message sent status. Any help will be appreciated.
I don't know why but after some hours of frustration, I restarted my pc and it just started working.
I also found out that terminating and rerunning php artisan serve process could also solve the issue