Amigo llevaba horas en buscar por lo menos algo que me diera correctamente una conexión de websockets, no lo entendía muy bien pero tu explicación fue muy presisa y oportuna, estoy desarrollando un chat con una complejidad similar a la de fcbk, pero lo estaba haciendo con un intervalo de js, como imaginarás no me dio el rendimiento que deseaba, por tanto veré como uso los eventos que produce el socket para hacer el refresh tal cual como lo has hecho... En verdad eres un GENIO!!!! Muchísimas gracias por esto... Saludos desde Colombia!....
Muchas gracias por hacer este tutoríal francamente me alegro ya que aquí en España es difícil saber de esta tecnología me subscribo y lo guardo en favoritos
No sé si hay alternativas mas modernas y efectivas en estos momentos, pero esto me ayudó muchísimo a terminar un par de asuntos pendientes. Gracias bro!
Excelente llevaba todo el día buscando esto. Muchas gracias estaba intentando con un código que da google pero nada y nada, también radicaba en un problema en la forma de ejecutar en el cmd el server.php como uso WampServer en windows me funciono así: (por si otra persona tiene el mismo problema) C:\wamp\bin\php\php5.4.16>php-win.exe "C:/wamp/www/pruebasrapidas/phpsocket/server.php"
+Oscar David Galviz amigo sigo sin poder ejecutar el archivo server.php, al momento de ingresar: C:\wamp\bin\php\php5.4.16>php-win.exe "C:/wamp/www/pruebasrapidas/phpsocket/server.php" me tira como que no se reconoce el comando interno o externo, le cambie la ruta del C: por mi version de php y por mi ruta del archivo server.php lo acomodé a mis rutas y aun asi no me ejecuta nada, ayuda porfavor
Disculpa amigo. Aparte de de ejecutar la instruccion se debe tambien de configurar el php.ini? o no es necesario? Disculpa la pregunta. Gracias de antemano
Excelente vídeo +Matin, gracias por tu aporte, ahora tratare de darle el enfoque que necesito, quiero implementarlo como notificaciones en un menú desplegable, a ver si me resulta. saludos...
+Martin Flores excelente video estoy implementando tu metodo en una pequeña aplicacion CRUD pero estoy un poco barado no puedo gestionar las actualizaciones, que consejo me puedes dar.....
gracias ya quedo solucionado lo unico que hay que hacer es como dices Martin Flores irse al servidor.php editar al final donde esta su $server->wsStartServer('mi direccion ip de mi pc',8080 "que es el puerto"); asi mismo en fancywebsocket en la linea 77 server =new fancywebsocket('ws://mi direccion ip de mi pc:8080 q es mi puert0); y editar el conect.php con nuestro pass y usuario y base obiamente ya cargada la base al sistema en el gestor y listo gracias exelente video solo creo que estaria bueno poner una barra para desplazar entre los mensajes xq creo q se pierden llega un punto donde ya no avanza pero si los pone xq si borramos msj desde la base de datos aparecen en el index
Buen tutorial! Para actualizar sin que afecte la cache puedes presionar en tu mac cmd+shift+R y en windows cntl+F5, de esa manera fuerzas la carga de css y js de tu navegador. Si me permites recomendarte un estupendo IDE, te recomiendo Aptana Studio 3. Es gratuito y multiplataforma y exageradamente completo.
Muchas gracias, de echo habeces lo utilizo en la oficina y si que es bueno, ahora mismo estoy probando brakets de igual manera me lo recomendaron. Gracias por el tip.
me ayudo a entender algunos conceptos, vi el video 6 veces, finalmente me dio el ultimo puntapie para entender aqui: developer.mozilla.org/es/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications , uff que complicado fue que entienda ... me siento realizado, como si hubiera aprendido hola mundo otra vez ... gracias !!!
Hola Martín!!! Que tal?? Saludos te agradezco por compartir tus conocimientos ayer estuve probando el código y para recepcionar los mensajes tengo que actualiza
Saludos, muchas gracias por la información. He entendido que con el método send() el usuario puede enviar N cantidad de datos al servidor a través de un JSON. Aunque tengo la siguiente duda, como haría para validar que ese usuario que está estableciendo conexión con el socket se ha autentificado. Por ejemplo, en estos casos: -Autenticar para conectar con el socket. - No permitir que envié datos (send( ), o al menos tratarlo en el server) - Restringir envío de datos a una lista especifica de usuarios
Martin Flores te hago una pregunta. sera que yo puedo agregar mas eventos al socket? como por ejemplo que consulte en la base de datos y que los envie al cliente?, si es asi como puedo hacerlo? gracias por compartir tu conocimiento
En el "switch" del minuto 12:27 en la linea 49 se pueden programar N cantidad de eventos, case 1 = guardar, case 2 = actualizar, 3 = consulta a la base de datos... en este apartado puedes crear una función donde pidas datos del cliente y la respuesta la muestres solo al id del cliente que la pidió.
Buenas tardes amigo, primero que nada muchas felicidades por tu video, muy bien explicado y muy bien editado. tengo varias dudas y espero puedas orientarme, si implemento esta metodología en un sistema muuy grande como por ejemplo un punto de venta y gestión empresarial MULTI SUCURSAL osea varias sucursales y varias maquinas conectadas a un servidor remoto, no alentarán la funcionalidad del sistema ? o tiran el server ? espero me puedas ayudar :D por tu atención gracias
De hecho, si facebook usara el método anterior, tendrían demasiados problemas con los servidores, ni Google lo salvaba por el uso excesivo de recursos.! Segun entiendo, facebook usa "Comet".. pero me puedo equivocar !!! Ya en serio, gracias por el tutorial de websockets, muy interesante....
Tal vez si me equivoque al mencionar que es la tecnología que utiliza Facebook, mas bien Podría ser una alternativa fácil de implementar y a nuestro alcance para actualización en tiempo real. Gracias por comentar.
Martin Flores Al contrario, gracias por los ejemplos, has hecho la fuerza de hacer los videos, eso mas de lo que yo puedo decir de mi mismo por los momentos. Con lo de la metodología push, te puedo comentar que aunque es fácil de implementar quemas un servidor a la velocidad de la luz, porque el problema no son 1 ni 5 pero 100 o 500 usuarios haciendo request cada x segundos ..... XD. es mas factible el uso de scoket/IO o estos que demuestras en este videotutoria. Saludos y mucha suerte!!!
antes que nada muy bueno tu tuto me ayudo resto una pregunta ¿si deseo crear una sala en la que hayan varios clientes algo asi como un grupo de facebok para chat como seria? gracias de antemano
Hola muy buen tutorial. Como puedo enviar desde php una señal digamos cada una hora que se actualizen las paginas conectadas al socket, es decir forzar la ejecucion del send() no desde javascript sino desde el codigo PHP. Muchas Gracias.
hola martin no tienes un video igual de websocket pero en ves de chat que sea para un punto de venta que cuando este en bajo stock que envie notificacion
hola martin muy buen aporte..!! funciona tal como muestra en el video por cierto, una consulta, te cuento que cargue datos desde mysql y no se actualiza automáticamente, hay alguna manera de solucionar esto?
Maetin Flores, aun estas ayudando a solucionar errores ? es que me aparece que "Uncaught TypeError: Cannot read property 'send' of undefined" sera que me puedes ayudar ? de antemano gracias...
Me aparece el siguiente error por la consola de firefox "Firefox no puede establecer una conexión con el servidor en ws://192.168.1.87:12345/. fancywebsocket.js:25:14" La IP es la de mi equipo y tambien modifique del archivo server.php la linea "$Server->wsStartServer('192.168.1.87',12345);". Los mensajes se insertan en la base de datos pero no se resfrescan en el index.php. Tengo instalado Xampp con php 7 en windows 10.
En el "switch" del minuto 12:27 en la linea 49 se pueden programar N cantidad de eventos, case 1 = guardar, case 2 = actualizar, 3 = consulta a la base de datos... en este apartado puedes crear una función donde pidas datos del cliente y la respuesta la muestres solo al id del cliente que la pidió.
Buenas, ante todo gracias por el tutorial me fue de gran ayuda pero quería consultarte porque no logro entender una parte (seria llevarlo a la practica o al mundo real jajaja). Suponiendo un ejemplo real donde tendría 1000 (es solo un ejemplo) apps de android que se comunican con el servidor ¿qué pasaría? Las app solo reciben una orden. Ej: hay un cambio descarga ese cambio. Que pasaría con el servidor? Existe un limite de conexiones? y si es así como se administra en la practica para que no calapse y salga volando hacia la luna?!! jajjaj El tema es que esas 1000 apps tienen que estar todo el tiempo a la escucha de si un usuario modifico algo desde la web, si es así lo actualiza en la app que ya sabe desde donde tiene que actualizar, solo recibe la orden (puedo hacerlo por json que pida a SQL y se fije si hay cambios pero consultar a sql cada 1 min x 1000 aplicaciones también seria mucha carga para la base de datos) asi que estoy en la duda de como llevarlo a la practica
amigo, excelente video! una duda.. cómo se pueden usar los web sockets en un servidor en linea y no en localhost..? es decir ya en un proyecto publicado con dominio .com??
es que he estado investigando y encuentro que los 2 metodos consumen muchos recursos y el servidor tiende a caerse, yo tengo un hosting con BanaHosting (con bandwidth ilimitado), de pronto sabes hasta que cantidad de usuarios soporta el Socket, o conoces un mejor metodo para actualizacion en tiempo real? (por ej: cual usará facebook) se que existe el Comet, pero parece que el rendimiento es muy similar al de Socket. Muchas Gracias
Amigo, excelente tuto, Podrías ayudarme? tengo un problema al iniciar el socket, por lo que obviamente no actualiza los datos si no lo hago manualmente, el error que me manda en consola es el siguiente: Fatal error: Uncaught Error: Call to undefined function socket_create() in C:\xampp\htdocs\chat\socket\clases\class.PHPWebSocket.php:103
Hola! una consulta; ¿Qué pasa si por algún motivo se cae la ejecución de server.php? ¿Cómo se puede correr nuevamente de manera automática? Gracias, saludos.
Hola amigo! Genial!!Buen tutorial !! Pero tengo una duda y te agradecería mucho si me respondes, la duda es la siguiente, revise el código y configure la ip de mi servidor que era 127.0.0.1 con el Puerto 81 , después de configurar el código me corrió de maravilla , todo funciona bien , al ejecutar el server.php aparecen errores pero le hago caso omiso a ello ya que el código me corre bien , estaba curioseando un poco y decidí subirlo a mi hosting con un dominio real y todo ello , la idea de este código es que funcione en tiempo real y este en la nube y bueno al subirlo realice la prueba y sin necesidad de configurar el ip de mi código pues todo corrió de maravilla , tu crees que sea pura coincidencia de que el ip de mi hosting también sea igual a mi ip de mi servidor local ?
Hola martín , buen tutorial. El ejemplo me corre perfectamente, el problema que estoy teniendo es al momento que el usuario inicia sesion, yo guardo su id en una variable de session , para posteriormente hacer las consultas por el id de usuario y así refrescar su contenido dinámico. Pero cuando un usuario hace una acción refresca para todo el contenido de ese usuario. Es decir obtengo el ID del usuario que hizo la acción para todos los que están conectados y eso no quiero eso si no que me retorne el de la session de cada usuario, tienes idea de como poder solucionar eso?. Espero tu respuesta Saludos.
Espero ya lo hallas resuelto pero existen muchas formas de resolverlo, una de ellas es mandar por la función send el id de quien envía y de quien va a recibir para posteriormente identificar todo el contenido html del usuario con su id, por ejemplo
Hey martin buen video lo probare , Sabes cual es la capacidad de web socket me refiero a cuantos usuarios podrian estar conectados simultaneamente? saludos desde bolivia
Tengo un problema, no se me actualiza, lo tengo que hacer manualmente y en fancywebsocket.js cuando me fijo aparece como si el mensaje fuese null, pero si pongo un alert en la funcion cuando se envia la data me aparece el json bien, que problema crees que tenga osea.. que soluciones buscarias? Gracias
hola, andaba buscando algo para hacer una actualizacion en tiempo real, y esta muy bueno! solo tengo una duda, soy algo novato en desaarrollo web, por ejemplo para implementar un proyecto que actualice en tiempo real, el archivo server.php es fundamental, y lo ejecutaste, pero al momento de subir la pagina a un host, como se ejecutaria ese archivo, o solo se sube ???
Alex Navas hola, bueno por el momento se podría ejecutar si tendrías un servidor dedicado. Si es compartido no creo que te lo permita tu servidor de hosting
Martin Flores ahg bueno, seria compartido, entonces no se podria, la solución sería usarlo solo con ajax verdad, asi como el video anterior que hiciste... bueno
fijate que estoy tratando de implementar una tienda online, pero he querido implementar algun tipo de envio de mensajes en vivo, cuando el cliente tiene alguna pregunta se responda rapido... pero descubri que el servidor compartido tiene la opcion de ejecutar ael server.php.......... aunque he probado el ejemplo que hiciste en este video, pero no me funciona, los datos se ingresan bien pero tengo que actualizar, y al momento de ejecutar el server.php me aparece un error : PHP Fatal error: Call to undefined function socket_create() in C:\xampp\htdocs\websocket\clases\class.PHPWebSocket.php on line 91
hola muchas gracias por el video, lo unico que veo es que funciona con php y jquery, yo solo se hacer es query (select * from xxx) en sql server en la misma consola de sqlserver aveces en la base de datos estan ingresando todo el tiempo datos y yo le tengo que hacer f5, tiene algo parecido para esto en sql server, pues yo el reporting services lo ejecuto en internet explorer o chroome pero con temporizado pero me parece interesante si se puede hacer para sql server, gracias saludos desde bogota colombia
muy bien, SQL server -> reporting service no lo he usado, pero por ser MICROSOFT... apostaria a que ya existe una herramienta para lo que quieres (real time) o bien, si no existe reporting service es software cerrado, dudo que se pueda cambiar el codigo fuente para lograr esto. pero lo revisare sas!!: igual saludos desde Mexico. =)
amigo monte el codigo fuente con todo y base de datos en mi localhost y no me actualiza los mensaje aunque me los muestra pero tengo que actualizar manualmente alguna ayuda?
Buenas esto me ha servido en local host actualmente tengo una cuenta en hostinger pero me cierra la conexion despues de 4 minutos de inactividad (Error 504 GATEWAY TIME OUT), yo solo requiero UNA ventana en tiempo real solo un script corriendo y no aceptan websockets, en una vps puede tener mas libertad de tiempo antes de que se cierre el scrip o como puedo aumentar ese tiempo?
muy buen tutorial ya lo probe con wamp server y funciona al 100 el detalle es que lo quiero utilizar en mi web y no puedo correr el server.php en cpanel me podrias ayudar no conecta con la ip del server lo intente correr con cron jobs pero no funciona ya verifique que este activo socket en la confi de pho
tal vez tengas que pedir a tu proveedor de hosting que abra el puerto de comunicación en el que estas ejecutando el socket. Aunque si es compartido no creo que sea posible iniciar el socket.
Como puedo ejecutar PHP server desde un hostin, por ejemplo hostinger,es, en windows ponemos php server.php y se ejecuta el socket pero en un host, de antemano gracias
Me devuelve el siguiente error al ejecutar server.php sabes porque? :/ socket_bind(): unable to bind address [99]: Cannot assign requested address in /var/www/html/160/socket/clases/class.PHPWebSocket.php on line 110
Hola muy bueno tu aporte amigo, pero tengo un problema. Lo tengo en mi laptop con Windows y funciona de maravilla, lo traslade a una máquina virtual con linux y no funciona, sale el siguiente error "WebSocket connection to 'ws://192.168.1.10:12345/' failed: Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT ", seria genial si me podrias ayudar.. Gracias!!!
... entonces una maquina virtual nunca lo he echo asi pero: teoria 1 -> el host virtual tal ves no es el 192.168... ya que este es el de tu equipo fisico, prueba buscando que direccion tiene la maquina virtual y cambiandolo en el codigo fuente
Martin, este es uno de los mejores videos que he visto, muy bien explicado. Saludos! Mira tengo una dudda, todo me corre OK, programe un chat privado, pero lo hice a nivel local usando mi propia IP y otros puertos, pero por ejemplo yo abri un server virtual en mi router para trabajarlo como prueba en mi IP publica. Entonces lo que hize fue reemplazar mi IP local con mi IP publica en los archivos del server.php y fancywebsocket.js, pero bueno al correrlo en la consola, me dice que el IP es incorrecto, es decir, no lo acepta, a que se debe esto?
Ha mira, ahí tienes que hacer un validación, si accedes desde la misma red, el JS se establece con la IP loca, 192.168.... Si accedes desde afuera estableces la IP pública. Para comprobar esto, entra desde otra red con la IP pública y establece la IP pública en el jS. NOTA: desde tu misma red no puedes acceder por la IP pública por una vaina de "redundancia"
+Martin Flores Excelente tutorial.. una pregunta si lo subo a mi servidor como hago para que siempre este activo sin la necesidad de de ejecutar "php server.php" ?
Hola, ya lo he probado en diferentes hosting pero tendría que ser un servicio dedicado ya que el proyecto puede usar muchos recursos y el hosting dedicado esta configurado para evitar el colapso. o Bien podrías intentar ejecutar el archivo "server" desde ssh
Hola, la verdad hay algo que no entiendo , al comienso cuando lo ejecute todo iba de maravilla , lo adapte a mi codigo que es un sistema de ventas y me funciono para el proposito que lo queria , todo funcionaba ok y de pronto dejo de funcionar , no movi nada en el codigo y solo dejo de funcionar , ejecute el codigo original y ya tampoco funciona , a que se deberia ? La libreria tiene un tiempo de caducidad o algo asi ?
Por ejemplo: en una empresa que labores pueden adquirir un servidor y realizar algún sistema de comunicación interna en tiempo real. Levantado de pedidos con actualización inmediata (almacén), en un restaurante levantado una orden desde la mesa con un iPad o tablet y hasta la cocina de inmediato se realiza el pedido de lo que quiere el cliente, infinidad de cosas que se pueden realizar.
hey he logrado que conecte el servidor pero a la hora de yo abrir el index en el navegador se queda cargando y nunca lo habré ya intente cambiar de puerto y nada alguien save como arreglar este errro?
ERROR! ERROR!, ERROR!, error instanciando el objeto FancyWebSocket ( "Server = new FancyWebSocket('ws://127.0.0.1:8080');" ) desde XAMP en MAC OS X Capitan. q puedo hacer?
+caez0n Siiii, Siiiii!, pero el FacyWebSocket esta asi ( "Server = new FancyWebSocket('ws://127.0.0.1:8080');" ) y me genera este error : WebSocket connection to 'ws://127.0.0.1:8080/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED ... Estoy en sistema Mac Os X y Xamp Server, he keido y me dice q debo abrir los puertos 8080 pasra TCP_IN y TCP_OUT...
+Ana Maria Vargas Zuluaga a eso voy :B ... sacale el :8080, dejalo como 127.0.0.1:80 o 127.0.0.1 y ve al archivo server.php y cambia el puerto tambien "$Server->wsStartServer('127.0.0.1',80)" de esta forma te deberia funcionar correctamente, el problema que tienes es que el programa escucha el puerto 8080 en el que no tienes nada por eso te aparece un error de coneccion, espero esto te ayude :D
Ayuda por favor !! Cuando ejecuto el archivo "server.php" me da este error: Warning: socket_bind(): unable to bind address [10049]: La direcci¾n solicitada no es vßlida en este contexto. in C:\xampp\htdocs\socket\clases\class.PHPWebSocket.php on line 110 Les agradezco de antemano a cualquiera que pueda ayudarme, Gracias !!
Desde MAMP server, la versión 2.2. Prueba verificando el funcionamiento con firebug. Recuerda que debes de ejecutar el archivo server.php tu caso desde cdm: ...ruta/server.php. Si lo ejecutas correctamente al actualizar la página del navegador el la ventana de símbolo te aparecerá un (1) casa vez que un cliente se conecte
justo ahi cuando ejecuto el server.php me arroja un par de errores que socket()_create() esta indefinido, dime a tu server le habilitaste alguna extension para php?
Martin Flores Hola que tal amigo, en la descripción está este enlace: www.comolohicieron.com.mx/como-lo-hicieron/socket-actualizacion-en-tiempo-real-php-mysql-y-jquery-como-facebook/ , en este enlace se encuentra el post, sin embargo no encuentro el espacio de descarga de los ficheros fuentes. Saludos.
Side Master es verdad! no funciona siempre, tienes que intentar varias veces hasta que agarre, pero de todos modos con el codigo en mano, no me funciono, haber como te va a ti
amigo disculpa las molestias, al cambiarle solo la terminación de la dirección ip me sale este error :WebSocket connection to 'ws://192.168.1.24:12345/' failed: Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT gracias
q onda carnal cuando ejecuto el server.php me dice que hay un error en socket_bind y dice la direccion solicitada no es valida en este contexto seria de gran ayuda si me dijeras como soluciono este problema gracias espero tu respuesta
tienes que cambiar la direccion ip en donde se ejecuta el socket, por ejemplo la mia es la 192.168.1.71 en el puerto 12345. Tu tienes que cambiar esta direccion tanto en el JS como en el server.php por la direccion IP LOCAL que tenga tu local host osea tu computadora en la red.