Search code examples
phplaravelvue.jspusherlaravel-echo

Echo join does not recieve data from broadcasted presence channel


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.


Solution

  • 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