Web Sockets con Laravel Echo y Soketi
HTML-код
- Опубликовано: 27 авг 2024
- Codigo: github.com/the...
Twitch: / thealphadeveloper
Dotfiles: github.com/ada...
Documentacion
Laravel: laravel.com/do...
Soketi: docs.soketi.app/
#laravel #php #websockets Наука
Fachero, buena persona y gran programador. Pesé a que no estoy en el back, valió la pena comerme el vídeo, aprendí bastante.
Gracias, si bien mucho cubre la implementacion con laravel y socketi trate que el principio cubra lo general para que se sepa que se puede aplicar con diferentes tecnologias, y estando en el front esta bueno saber cosa si otro de backend te dice que hagas una llamada cada x tiempo le podes sugerir websockets. Saludos y gracias por estar del otro lado
Hey, gracias a tu contenido, ya conseguí trabajo, en laravel pero con angular
Tu contenido vale oro
Felicitaciones por el trabajo, me pone muy contento. Angular no es de mis favoritos pero cuando se trata de trabajo hay que hacer lo que hacer. Siempre es digno. En mi caso me gusta mas Laravel pero la empresa me paga para usar Symfony y lo hago igual. Muchos exitoso con tu nueva etapa.
@@Alpha_Dev entiendo si por mi fuese solo laravel
Foram 29 minutos muito bem gastos. Obrigado pelo conteúdo!
Oye, gracias por existir ❤️
Gracias por las palabras y estar del otro lado, sin nadie del otro lado seria mas dificil que haga contenido.
Espectacular, felicitaciones!!
Muchas gracias!
muy bueno
He estado trabajando con soketi y he seguido tu tutorial. Todo perfecto. Te lanzo un repto para que yo pueda tambien ver como lo harias tu. Configurar soketi SSL en locahost. Estoy teniendo problemas en conseguirlo desde hace una semana...
Si varios mas han comentado ese problema, voy a ver si lo puedo abordar. Saludos
Impecable explicación!
Muchas gracias!
Excelente contenido, que pasa cuando quiero formar grupos de usuarios a notificar ? . Es decir, si quiero actualizar de forma diferentes dos grupos de usuarios. y que no se puedan ver las actualizaciones de un grupo en el otro grupo.
Hola Dan. Bueno lo primero es tener alguna manera de diferenciar estos grupos y de authenticar. Digamos que tenes 2 modelos usuarios y grupos. un usuario puede pertener a un grupo. Vas a tener un channel que sea "notificaciones-grupo-{id-grupo}" Cuando el usuario llega a la pagina donde va a estar escuchando para el channel digamos tuapp/alertas/{id-grupo} ahi va a agregarse el listen del channel "notificaciones-grupo-{id-grupo}" y como mostre en el video en el channels.php tenes que validar con el id del usuario y el id del grupo si pertenece.
Tambien podes validar en la pagina que el usuario pertenece al grupo para que ni siquiera pueda entrar.
Asi solamente va a poder escuchar mensajes del grupo si el usuario es parte del grupo o la validacion que elijas.
Espero que esto te ayude.
Saludos y muchos exitos.
@@Alpha_Dev se tienen entonces que crear diferentes "canales" uno para cada grupo de usuario con diferente autenticación ?
Si y no, si ves en el minuto 17:29 ves que tengo el canal "pedidos.{$this->peiddo->id}" en si se declara un solo canal, pero va a ser diferente por cada pedido. Y si ves en el minuto 24:03 vas a ver que esta la funcion para chequear `pedidos.{pedido}' que es el mismo nombre ya definido y recibe como parametros user y pedido. Para tu casa tenes que reemplazar pedido por grupo y bueno la logica de validacion para lo que necesites. Pero en si se define un solo canal que va a tener un parametro. Funciona similar como a una ruta, donde tenes una ruta definida para muchos id que van a poder mandar.
@@Alpha_Dev absolutamente asombroso, muchas gracias. Lo voy a implementar haber que tal sale. Saludos.
Excelente contenido. Algunos problemas con autenticaciones broadcasting/auth en canales privados, pero se resuelve. La principal pergunta que me viene a la cabeza es: Como hacer deploy a produccion en laravel forge??? Lo has echo???
Gracias Paulo, no uso forge asi que no tengo experiencia en eso, pero buscando encontre este tutorial oficial en el blog de laravel blog.laravel.com/deploying-soketi-to-laravel-forge espero que te sirva. Saludos
ouu, que genial encontrar a otro amante del neovim y tmux como yo , que alegria
Un gusto Merlo, ya no puedo trabajar de ninguna otra manera sin tmux ni neovim. no te olvides de pasarte por discord si queres compartir cosas relacionadas a ambos en mas detalles. Sino te sigo viendo por los comentarios. Saludos y exitos.
@@Alpha_Dev verda que si, igual a mi, me dan un trabajar con un proyecto y solo pienso, ahora que plugins are para automatizar esto en lua gg, cuanto me acostumbre a usar tmux y neovim, oka, busco donde esta tu canal discord y me uno, graciaaas
@@Alpha_Dev ya me uni, estoy con una foto de cuando estaba en el ejercito jajaja, wao, tienes un video de que si es necesario tener un titulo para estar en esta area de programacion, lo vere con mas detenimiento al medio dia, pff, yo aprendi programacion en la pandemia, era guia turistico en ingles, y andaba desesperado por trabajo chuu, que dificiles tiempos, que exelente contenido, pff, yo trate de hacer videos para youtube(puedes ver mi vergonzoso canal ggg) pero no tenia buenas herramientas en windows y tampoco en linux, ahora me compre una mac, pero ahora tiempo me falta gg, este finde lo are como de lugar g
Thanks for the video. I used the auto-translate to understand some words. I was looking for soketi in laravel videos. Your video was on top search.
By the way, what is your editor? It's amazing.
Again, Thank you for the video!
You are welcome. Glad the auto-translate feature works for you. Yes there is no that popular, most of the people go with the simpler solution of pusher, but if you want to self host or host all in your vps is a great tool.
My editor is Neovim, I am prod of my configuration took me a long time.
Thanks for the time to comment. Have a good day
Didn’t understand a word, but thanks for the tutorial.
I have been there, before learning English, founding a tutorial but don't understanding. Hope you have gotten something from the video at least. If you have a question I can try to answer it. Thanks for the message.
Buenas video excelente, todo me funciono bien pero cómo podría subirlo a mi cpanel, gracias de ante mano
Hola Ismael, esta solucion no se puede desde un hosting con cpanel, dado que no podes instalar un software como soketi, para esto es recomendable ir con un vps, no tiene que ser extremadamente grande, digital ocean y linode tiene muy accesibles que te pueden servir. Pero bueno requieren mas de configuracion para poder configurarlo todo, dado que mucho el vps viene sin nada instalado, aunque hay algunos prearmados en los servicios y muchos cuentan con guias. Espero que te sirva. Saludos.
Buenas mano excelente.. tengo una pregunta un poco fuera del tema.. como haces para que tu Nvim te reconozca los archivos Blade como tal?.. a mi siempre me lo reconoce como PHP, tengo el plugins de treesitter instalado y configurado, pero igual no los reconoce
Hola Migbert, para blade uso el plugin github.com/jwalton512/vim-blade, en la descripccion misma dice q es para laravel 4 y no se actualiza desde 2019, pero blade no ha cambiado asi que todavia me sirve. Treesitter no vi que tenga soporte para blade asi que si es normal que este lo este tomando como PHP. Si te referis a que instalaste con treesitter uno para blade me gustaria verlo dado que desde la pagina oficinal github.com/nvim-treesitter/nvim-treesitter#supported-languages no hay y estaria bueno que haya uno. Saludos. y exitos.
en el docker-compose estaba esto repetido:
networks:
sail:
No me habia dado cuenta, supongo que se pisaban y funcionaba igual.
Excelente vídeo y muy completo, solo quería verificar si sabes como realizar la misma conexión con ssl y certificados generados con letsencrypt, ya que al momento de hacer el dispatch del evento tengo un error de una BroadcastException: Failed to connect to Pusher, lo demás funciona correctamente tanto subscribirse al canal privado he probado con soketi y con laravel-websockets pero ambas me dan el mismo error.
como este generado el certificado no deberia ser problema, tenes que asegurarte de tener el dominio para tu servidor de soketi configurado y reviesar la configuracion de soketi para que use los certificados.
Tambien revisar la configuracion para que utilise wss y no ws que es la equivalente segura para que utilize con los certificados.
Por el error es revisar la conexion por el backend donde laravel se conecta, fijarte la configuracion de boradcast.php y ver que servidor tiene configurado con url y ver si en ese puerto tambien tiene que ser configurado con el certificado.
Saludos y exitos.
@@Alpha_Dev gracias por las observaciones, siempre te comento si logro solucionarlo.
Verifique y todo conecta bien los canales no dan inconveniente, tengo autenticacion por ser privado y pasa sin problemas, solo al momento de disparar el evento pusher da la excepcion Illuminate\Broadcasting\BroadcastException Failed to connect to Pusher
Escribí al discord que le he dado vueltas a la configuración y no logro encontrar el error. Cabe decir que es entorno local pero levantar ssl no me dio problemas solo el trabajar los websockets con ssl está generando este inconveniente.
Vi tu mensaje en discord, sigamos la conversacion ahi, ya te respondi pidiendote la configuracion para ver que podia ser.
@@Alpha_Dev Si claro, gracias por el apoyo!!!
Compa, ¿es posible reemplazar 'pusher' por algo en grandes volúmenes que no genere costo?
Hola Daniel, tenes opciones como soketi que podes instalar en tu servidor existent, require como mustro otra instalacion, o ahora esta laravel reverb que va a correr con php directamente en tu app. Lo de grandes volumenes va a depender de la estrucutra que cuentes y armes.
Excelente video!
Lo único es que al intentar conectar mi frontend de React con el websocket me salta este error en consola:
Uncaught You must pass your app key when you instantiate Pusher.
He copiado el .env del back al front y sigue saltándome el mismo error. (actualización: si hardcodeo el app key ya no salta el error y me salta este error:
Uncaught Options object must provide a cluster)
Lo único que he hecho diferente es que yo tengo el servidor soketi en un docker.
Espero que puedas echarme una mano, un saludo!
Hola, estas usando vite o laravel mix ? ya tiene un tiempo el video y las tecnologias siguen, recomendaria revisar la documentacion de socketi para ver que diferencias tendria con tu implementacion.
@@Alpha_Dev Gracias por responder! Utilizo laravel mix
Hola amigo, cómo puedo montar un servidor websocket en apache que corra automáticamente sin nesecidad hacerlo manual
Hola Jose, no conosco de ningun websocket servidor con apache, si te estas refiriendo en utilizar apache como proxy para el webserver se puede, pero en cuanto al servidor para que inicie automaticamente podes utilizar algo como supervisord que se encargue de que el servidor este siempre levantado y corriendo. Saludos espero que te sirva la info
@@Alpha_Dev ok, gracias por tu respuesta, soy nuevo con esto de websocket y me parece interesante
Excelente video... Felicitaciones. Una pregunta, como puedo obtener los certificados SSL Let's Encrypt (producción) para el WebSockets, cualquier ayuda te lo agradezco.
Hola, tengo entendi el certificado sirve el mismo que para https. El certificado certifica el dominio. Asi que si esta en el mismo no hay problema. Si el web socket server esta en un subdominio y el certificado no tiene para wildcars en subdominio, vas a tener que generar otro para el subdominio. Para esto podes seguir el mismo proceso en un servidor http temporal para el subdominio.
Genial tu video amigo, y estoy intentando conectar soketi con redis ya que tengo un cluster de sokets, pero al realizar la conexión como me doy cuenta cuando se suscriben si no veo reflejado ningún dato escrito por soketi en mi DB de redis jeje tienes alguna idea de como funciona esta parte?? todo lo estoy haciendo con Laravel sail
Hola Juancho, no tengo experiencia intentando haciendo eso, ahi revise la documentacion un poco y vi que ademas de configurar docs.soketi.app/getting-started/redis-configuration esas variables hay que habilitar el escalado horizontal aca docs.soketi.app/advanced-usage/horizontal-scaling/redis-configuration.
Tambien es una buena opcion chequear los logs con sails logs y ver especificamente si desde soketi se dispara una conexion a redis. Ver tambien que el nombre que configuraste para redis en soketi sea el mismo que esta definido en el docker-compose. Espero que esto te ayude al menos a encontrar el problema. Saludos
Hola @@Alpha_Dev, ya revise esa parte y accedo al contenedor pero no se si la información se esta guardando en Redis jajajajajaja, veo que se crean dos canales pero no veo que se ingrese información a esos canales, aveces no entiendo mucho como hace para funcionar eso, es muy raro
si se estan creando canales asumo que la conexion esta bien y confiar que esta funcionando como se espera. Sino podes conectarte con un cliente de redis y monitorear los canales. Fuera de eso si la aplicacion funciona como esperas asumi que esta bien. Tambien podes despues de levantado todo y andando stopea el container de redis y fijate si deja de funcionar. Esas ya son pruebas mas alrededor para confirmar que lo esta usando. Saludos.
Buen video, actualiza el código del repositorio ya que el el link arroja un 404 o tal vez vuelve público el repositorio, saludos
Gracias Alexis, me quedo como privado sin darme cuenta, y desde mi cuenta abria bien, ahi lo cambie y lo verifique y esta visible. Saludos.
tu consegue fazer isso no lumen???
Con esto puedo tener varias app laravel q escuchen entre si ? Para q trabajen en conjunto?
No lo creo. Imagino que hablas que son aplicaciones diferentes, para que interactuen aplicaciones diferentes o puede ser simplemente por un api http, o por un sistema de envio y recepcion de mensajes con algo como aws sns y sqs. Estas opciones son las mas utilizadas en las arquitecturas de microservicios porque si bien las aplicaciones estan relacionadas no es deseable que queden tan dependientes por algo como soketi. Espero que te ayude mi respuesta. Saludos y exitos
@@Alpha_Dev tengo una app principal que se encarga de alimentar con datos a otras apps en tiempo real.
@@marroquin92 siguen siendo las opciones que te di a mi parecer. va a depender de quien deba encargarse de que el mensaje llegue como corresponde. Si es la aplicacion principal la responsable esta bien con llamadas curl y podes esperar a ver la respuesta que da. Pero si no es su responsabilidad o si no queres esperar por una respuesta usa la solucion con las queue de sns y sqs. vas a tener que investigar un poco dado que las queue por defecto de laravel esperan mensajes de su misma app pero no es un limitante puede leer de otros origines.
Hello bro could you do in English version too?
It would mean lots.
I couldn't find any relevant soketi tutorial on youtube.
p.s i'm not a native english speaker either.
Hi Saw, It is not part of my plans now to make an English version, doing that requires more time that currently I dont have. Hope you can find some tutorial, if not the documentation should help you to get started. Hope you have a nice day and good luck
I still don't understand why you don't use a common language or use subtitles
Hey, I understand that is not a common language to you, but is the main language for most of latinamerica which is where I am from. I choose to create content in this language to help people that does not handle the English to a high level and there is a lot of good resource in English but not in Spanish.
Related to use subtitles yes that is an option but takes a lot of effort to do it, from that that I don't have for that being this a hobby and being an small channel.
The same information that I provide in the video is available in the documentation available in English so you can check there.
Hope you find another youtube channel that provides the content that you are looking for in a language that you know.
Best regards.
Lo has probado con ssl??
Hola Eduardo. No he tenido un projecto que lo utilise asi que no tuve la expreiencia de primera mano en configurarlo. Si tenes configurado manualmente el ssl podes ver la seccion en la misma documentacion de soketi. Si lo tenes configurado por algun sistema de proxy quizas solo tengas que habilitar los puertos esperados. Espero que esto te ayude si lo tenes que implementar por tu cuenta.
@@Alpha_Dev estoy luchando con ello, ya lo tengo en un servidor sin ssl funcionando perfectamente y al meter ssl, ya no me va, he seguido la documentación oficial y otras pero nada, siempre el mismo error.
que error te muestra ? puede ser algo de configuracion recorda que en la parte de bootstrap.js hay una para wss port que es para la parte de hacerlo con ssl. Por que si ya tenes tu sitio con ssl el navegador te puede bloquear la conexion a algo no ssl.
@@Alpha_Dev si si esta con wss y ws, si no te incomoda te envío un email.
Eduardo para contactarse justamente hoy abri el discrod (el link esta en la parte de post de cominidad del canal y en los links dentro del canal de youtube) ahi ya podemos hablar mas sobre el tema, vere con mi disponibilidad hasta donde podemos ver el tema. Espero verte por ahi. Saludos