J'ai récemment lu sur les websockets et SaaS comme Pusher et Socket.io récemment, tout en travaillant sur mon Laravel application pratique de chat. Ce que je ne comprends pas) est, pourquoi avons-nous besoin d'un logiciel externe pour établir une connexion websocket? Le code du serveur comme Laravel ne peut-il pas établir directement la connexion avec le front-end comme Vue.js? Pourquoi a-t-il pour passer par l'intermédiaire comme Pusher et Socket.io? Désolé pour la question noob.
Ce n'est pas avoir à.
Ces logiciels s'avèrent tout simplement banals de travailler avec le protocole Websocket.
Rappelez-vous, Laravel est un framework d'opinion . Cela signifie qu'il choisira et choisira ses propres bibliothèques pour les résumer types de concepts pour vous afin que vous n'ayez pas à vous soucier autant de ce qui se passe sous le capot.
Fondamentalement, il y a deux composants dont vous avez besoin pour pouvoir travailler avec Websockets:
La raison Laravel ne communique pas directement avec le frontal à l'aide de Websockets est parce que Laravel lui-même n'est pas un serveur Websocket. Du moins, pas vraiment. Et tandis que PHP prend en charge le travail avec le protocole Websocket - et même certaines bibliothèques pour en tirer un meilleur parti - il n'est tout simplement pas utilisé pour gérer longtemps -des processus vécus aussi souvent que d'autres langues.
Au lieu de cela, Laravel utilise la fonctionnalité Pub/Sub fournie par Redis pour écouter les événements qui se produisent via Redis et la bibliothèque Predis . La raison pourquoi il le fait parce que Laravel est mieux adapté en tant qu'intermédiaire pour le serveur websocket et tous les clients connectés.
De cette façon, Laravel peut à la fois transmettre des informations au serveur Websocket en utilisant Broadcasting Events , ainsi que recevoir des informations sur les événements du serveur Websocket et déterminer si les utilisateurs ont la capacité ou l'autorisation de les recevoir.
Si vous ne souhaitez pas utiliser Pusher, il existe une bibliothèque qui vous permettra d'exécuter votre propre serveur Websocket spécifiquement pour Laravel appelé Laravel Echo Server .
Sous le capot, cette bibliothèque utilise toujours Socket.io et Redis pour que toutes les pièces mobiles communiquent entre elles de manière transparente dans une application Web Laravel. L'avantage ici est que vous n'aurez pas besoin de s'inquiéter du nombre de messages envoyés par le serveur.
L'inconvénient est que vous devez maintenant savoir comment gérer et maintenir ce processus sur votre serveur afin que le serveur Websocket sache s'activer chaque fois que vous redémarrez votre serveur, ou si une défaillance se produit, etc.
Consultez PM2 pour en savoir plus sur l'exécution et la maintenance des démons de serveur.
Si vous n'êtes pas d'accord avec les opinions de Laravel sur la façon de gérer les Websockets, vous pouvez théoriquement utiliser tout autre langage côté serveur pour gérer le protocole Websocket. Cela nécessitera simplement une meilleure connaissance pratique du protocole lui-même; et si Laravel doit fonctionner avec lui, vous devrez savoir comment écrire les classes Service et Provider appropriées pour pouvoir le gérer.
Réponse courte? Vous n'êtes pas obligé de les utiliser. Arrêtez d'écrire votre propre implémentation Websocket côté serveur et client.
Réponse plus longue.
Pourquoi utiliser Laravel? Je peux faire tout cela avec PHP directement.
Pourquoi utiliser Vue? Je peux faire tout ça avec Vanilla javascript.
Nous utilisons des bibliothèques et des frameworks car ils résument les détails de l'implémentation et facilitent la création de produits. Ils gèrent les cas Edge auxquels vous ne pensez pas ou les choses vous ne savez même pas que vous ne savez pas parce qu'ils sont utilisés par des milliers ou des millions de développeurs et toutes les connaissances et les bugs ils ont rencontré et corrigé sont intégrés dans la mise en œuvre.
C'est l'une des caractéristiques de l'ingénierie logicielle, réutilisation du code . Ne vous répétez pas et n'écrivez aucun logiciel dont vous n'avez pas besoin. Il vous permet de vous concentrer sur la création d'une solution pour vos besoins particuliers, et de ne pas vous concentrer sur la création d'un ensemble d'infrastructures avant même de pouvoir créer votre solution.
Je n'ai jamais utilisé Pusher, mais il semble que oui, c'est un produit SaaS. Mais Socket.io est open source .