Private Channel
usei uma aplicação que eu tenho em vue e consegui fazer envair notificação public channel para usuários diferentes, já ajuda para o que eu quero não precisa realmente se privado, para usuários autenticados via API não consegui, a mensagem é que não consegue autenticar.
Olá, Altenir!
Tudo bem?
Compartilhe comigo por favor, os detalhes do projeto, parte do código ou integral. Preciso de mais detalhes para conseguir te ajudar.
Como está a autenticação da API? O que usou?
Tudo bem Carlos
Pois é, eu tinha colocado aqui todo o passo a passo completo que eu fiz, mas agora que vi que não salvou.
Eu consegui fazer autenticar, umas das coisas que falta era colocar o middleware na rota do BroadcastServiceProvider.php, aí ficou autenticando mas não envia notificação.
vou responder por parte porque não esta aceitando enviar tudo
BroadcastServiceProvider.php
PostCreated.php
continuação...
PostCreated.php
channels.php
continuação...
Index.vue
Posta o código no GitHub, porque fica mais fácil visualizar, e também ver versões dos packages e etc.
https://github.com/altenir/company
Show, compartilhe comigo um print dos logs do laravel-echo-server quando o evento do private channel é disparado.
https://imgur.com/a/m7lOHET
segue outro print, veja que está autenticando, isso sgnifica que no vue está correto e que está se concatando com o server, certo?
e também rodando os events, o usuário logado é id 11, mas não recebe a notificação
https://imgur.com/xXSoCm9
aqui deixei só um pra melhorar a visualização
https://imgur.com/31pmOnk
aqui mostro que sem autenticação está normal
https://imgur.com/a/i08QtKv
Obrigado pelos prints.
O problema está no nome do channel, aqui vc deixou:
'laravel_database_post-created'
Mas, se olhar esse print: https://imgur.com/31pmOnk
O nome do channel final ficou: private-App.Models.Security.User.{id_usuario_aqui}
--
É possível "forçar" o nome do evento:
https://laravel.com/docs/10.x/broadcasting#broadcast-name
Não entendi. tentei /broadcasting#broadcast-name mas não funcionou
Os nomes são esses, é são os nomes que são usados no vue, os únicos que funcionam são os que não precisam de autenticação, que são post-created e user-...
já App.Models.User. AUTENTICA COMO NO PRINT MAS NÃO ENVIA NOTIFICAÇÃO, como se ele está autenticado e está disparando o evento, eu já tentei de diversas formas, até mudando o nome, tentei muitas coisas, mas não deu certo
se lá no client VUE eu colocar esse prefixo private- na frente do nome do canal App.Models.User. ele para de autenticar, já no não autenticado não tem problema colocar o prefixo
[2024-01-03T01:47:30.674Z] - Preparing authentication request to: http://192.168.100.38:3333
[2024-01-03T01:47:30.675Z] - Sending auth request to: http://192.168.100.38:3333/broadcasting/auth
[2024-01-03T01:47:30.884Z] - aFm7WIj64BwxMIs-AAAB authenticated for: private-App.Models.User.11
[2024-01-03T01:47:30.884Z] - aFm7WIj64BwxMIs-AAAB joined channel: private-App.Models.User.11
até agora fiz váris coisa e não resolveu, mas resumindo o que está contecendo é isso aqui, o problema é o prefixo que é adiconado ao nome do canal
autorização em canais privados funciona bem, mas as mensagens continuam sendo enviadas no canal errado, usando o prefixo no nome do canal.
Vou precisar simular aqui, vc está usando o Redis?
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!