Laravel 5.8 и React Native с использованием pusher: ошибка при прослушивании частного канала: нет обратных вызовов в беседах34 для pusher: subscription_succeeded

Проблема в том, что разработчик приложения пытается прослушать событие через частный канал pusher. Вот код laravel.

маршруты / api.php

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

маршруты / каналы.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 событие

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')
    ];
  }
}

Реагировать на получение сообщения

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)
   });

Но результат такой:

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

Есть ли что-то еще, что нужно сделать в Laravel, чтобы он работал в React? или проблема в реакции и ее нужно исправить? Пожалуйста, сообщите заранее и спасибо.


person PHP User    schedule 15.06.2020    source источник
comment
Сталкивались ли вы с какими-либо другими проблемами при получении сообщений на канале беседы34? Ошибка указывает на то, что было получено событие pusher_internal: subscription_succeeded, но здесь нет привязки для этого события. Это не должно предотвращать проблемы при получении других событий, к которым вы привязаны (события MessageSent).   -  person doydoy    schedule 18.06.2020


Ответы (1)


Просто измените Echotest.channel на Echotest.private

person user15283128    schedule 25.02.2021