Je souhaite implémenter les notifications Web dans Laravel à l'aide de sockets Web. J'ai Essayé de pousser. C'est très facile mais c'est un package payant. J'ai aussi essayé redis et socket.io pour lesquels je dois installer horizon. J'utilise Windows et je ne peux pas l'installer en fonction de ce que j'ai lu sur horizon.
Je suis donc très confus à propos de la notification Push. J'essaie depuis au moins une semaine mais je n'ai pas encore trouvé de solution. Mon front-end est dans Angluar 5/Android et le backend est dans Laravel 5.6.
Pouvez-vous me suggérer de bonnes idées pour mettre en œuvre la notification push?
Vous avez été utiliser pousseur, donc je suppose que vous savez utiliser événement.
Je vous recommande laravel-echo-server.Il est très facile à utiliser, avec une API intégrée.
Voici un nouvel exemple d'un projet laravel-echo à partir de zéro. Après avoir configuré le projet.
vous aurez besoin de prédis si vous ne l'avez pas encore installé
composer require predis/predis
redis-server /usr/local/etc/redis.conf
npm install -g laravel-echo-server
laravel-echo-server init
App\Providers\BroadcastServiceProvider::class
dans config/app.php
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/socket.io.js"></script>
dans votre app.blade.phpnpm install --save laravel-echo
. Si vous n’êtes pas familiarisé avec npm ou vue, vous pouvez simplement inclure ce fichier compilé à partir de mon projet github. compiledjsajoutez ceci à app.blade.php
<script>
window.Echo = new Echo({
broadcaster: 'socket.io',
Host: '{{url('/').':6001'}}',
});
Echo.private(`App.User.{{Auth::id()}}`) // private channel
.listen('NewMessage', (e) => {
console.log(e)
});
</script>
enfin lancez laravel-echo-server start et ouvrez votre projet, vous verrez
[20:53:21] - Lv5OKDAcuSLsK1nBAAAE authenticated for: private-
App.User.1
[20:53:21] - Lv5OKDAcuSLsK1nBAAAE joined channel: private-App.User.1
vous pouvez écouter n'importe quel événement ou d'autres notifications
voici mon projet github echo-example
ajoutez un peu de code pour que vous puissiez utiliser le message envoyé par postier à un utilisateur spécifique. Vous pouvez voir le message affiché sur la console chrome.
Jetez un oeil à cet article article . Il couvre l’implémentation de websocket dans laravel en utilisant le pilote redis, le client Laravel echo et socket.io.
Selon l'article ci-dessus:
"Pourquoi n’utilisez-vous pas simplement Pusher?"
Voici la chose.
Laravel est livré avec Pusher activé. Même si Pusher semble être une solution rapide «Plug and play» (quelle qu’elle soit), elle vient avec des limites. Vérifier https://pusher.com/pricing
Et la plupart des tutoriels vous trompent avec le titre d'implémenter Websockets alors qu'en réalité ils veulent juste vous donner Pusher. (Et ma partie préférée est quand ils disent que vous pouvez facilement passer à socket.io)
Conformément à documentation laravel , je recommanderai l’utilisation de Pusher. J'ai créé un paquet pour l'utilisateur WebSockets dans laravel.
https://www.techzonemind.com/scalable-websocket-server-laravel-applications/
Il utilisera Redis pour la mise en file d'attente en arrière-plan afin d'optimiser les performances. Je l'ai utilisé dans peu de solutions. Je ne suis peut-être pas utilisable dans tous les cas d'utilisation. Mais bon de regarder.
PHP ne construit pas pour exécuter des tâches simultanées, si vous avez le choix, nodejs sera une meilleure solution,
LE MEILLEUR MOYEN D'INTÉGRER LE TEMPS RÉEL À LARAVEL IS NIETHER NODE NOR PUSHER
Vous trouvez Pusher Easier et vous ne voulez pas payer le prix. Alors, sans hésiter, vous devriez essayer Laravel Websockets . C'est un remplacement de poussoir très simple.
En bref Vous utilisez les bibliothèques du client pousseur pour accéder à un serveur semblable à un pousseur hébergé sur votre serveur php. Depuis son open source, il est gratuit. C’est mieux que d’utiliser socket.io ou redis car ils vous obligent à payer des frais de serveur supplémentaires. . Vous pouvez consulter leur application de démonstration ici
PS
Si vous voulez plus de contrôles personnalisés, vous pouvez utiliser ratchet