PHP User
PHP User

Reputation: 2422

Laravel 5.8 and React Native using pusher: error listening to private channel: No callbacks on conversations34 for pusher:subscription_succeeded

The problem is when the app developer tries to listen to the event via pusher private channel. Here's the laravel code.

routes/api.php

Route::middleware('auth:api')->post('/broadcast/auth', 'Api\Auth\BroadcastAuthController@auth');

routs/channels.php:

// notifications channel
Broadcast::channel('users.{id}', function ($user, $id) {
  return (int)$user->id === (int)$id;
});
// conversations channel
Broadcast::channel('conversations.{conversation}', function ($user, \App\Models\Conversation 
$conversation) {
    return $conversation->users->contains($user);

});

MessageSent event

class MessageSent implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $message;
/**
 * Create a new event instance.
 *
 * @return void
 */
public function __construct($message)
{
    $this->message = $message;
}
/**
 * Get the channels the event should broadcast on.
 *
 * @return \Illuminate\Broadcasting\Channel|array
 */
public function broadcastOn()
{
    return new PrivateChannel('conversations.' . $this->message->conversation_id);
}
/**
 * Load user relation.
 *
 * @return array
 */
public function broadcastWith()
{
    return [
        'message' => $this->message->load('user')
    ];
  }
}

React receiving the message

var Echotest= new Echo({
  broadcaster: 'pusher',
  key: 'xxxxxxxxxxx',
  forceTLS: true,
  cluster:"eu",
  authEndpoint: 'https://example.com/api/broadcast/auth' ,
  auth: {
      headers: {
      Authorization: "Bearer " + token ,
      }
    }
});
console.log(Echotest);
Echotest.channel("conversations" + this.state.conversation_id)
  .listen("App\Events\MessageSent", e => {
   alert(e)
   });

But the result is:

Pusher : Event sent : {"event":"pusher:subscribe","data":{"channel":"conversations34"}}
Pusher : Event recd : 
{"event":"pusher_internal:subscription_succeeded","channel":"conversations34","data":{}}
 Pusher : No callbacks on conversations34 for pusher:subscription_succeeded

Is there anything else need to be done in Laravel to make it work in react? or the issue in react and need to be fixed? Please advise and thanks in advance.

Upvotes: 0

Views: 477

Answers (1)

Angelo Mien
Angelo Mien

Reputation: 29

Just Change the "Echotest.channel" to "Echotest.private"

Upvotes: 0

Related Questions