#laravel #react-native #pusher
#laravel #реагировать-родной #толкатель
Вопрос:
в настоящее время я работаю над мобильным приложением с использованием react native, а в качестве серверной части я использую Laravel.
В качестве клиентской библиотеки каналов на стороне клиента я использую Pusher
Вот как выглядит мой маршрут канала в серверной части
Broadcast::channel('conversation.{message_id}', function ($user,$id) {
return true;
});
Я могу успешно транслировать, но в консоли отладки pusher я заметил, что к маршруту добавлен префикс (private-).
const pusher = new Pusher('XXXX', {
cluster: 'eu',
authEndpoint: 'http:backend.test/api/broadcasting/auth',
auth: {
headers: {
Authorization: `Bearer ` token,
Accept: 'application/json',
},
},
});
const channel = pusher.subscribe('private-conversation.7');
channel.bind('App\Events\MessageSent', function (data) {
console.log("event")
console.log(data);
});
Как вы можете видеть в моем коде, я подписываюсь на «private-conversation.7», консоль отладки pusher показывает, что клиент успешно подписан на канал, но проблема в том, что клиент не прослушивал события, когда я создаю пользовательское событие в pusher и устанавливаю «conversation.7» какимя канала (я удалил private- prefix) событие успешно запущено.
Какие-нибудь предложения, пожалуйста?
Ответ №1:
Это соглашение, используемое для разделения частного, общедоступного и канала присутствия.
Когда вы подписываетесь на канал с private-
префиксом, для этого потребуется процесс аутентификации.
Laravel автоматически добавит private-
префикс к имени канала при трансляции.
/**
* Get the channels the event should broadcast on.
*
* @return IlluminateBroadcastingPrivateChannel
*/
public function broadcastOn()
{
return new PrivateChannel('orders.'.$this->order->id);
}
Вот справочные документы:
https://pusher.com/docs/channels/using_channels/private-channels