Chat privado entre usuarios (notificaciones)

noticiasvs Seguir

Gamma
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
4 Ene 2017
Mensajes
217
Hola chicos, estoy haciendo un chat y quiero algo sencillo, lo tengo planteado de la siguiente forma. Tengo una tabla con 4 campos:
- idconversacion, que es el id de un usuario unido al id del otro usuario
- nombre de usuario
- mensaje
- leido

El tema es que cuando se inserten las filas en la bd, si el usuario con el que chateas (no tú) está en la página del idconversacion, se manda el insert con un valor para leido de 1, si no está conectado a la página con idconversacion se manda el insert con un valor para leido de 2. El tema es, se puede detectar si un usuario está conectado en ese momento en esa página mediante javascript?? o ajax??

Seguramente existen otras formas, que sobrecargen menos la bd, así que si conocen alguna tecnología para hacer un chat más optimizado y que sea posible ejecutar desde un hosting compartido (por el momento), estaría agradecido por la información. Saludos
 
Última edición:

epicmedia

Gamma
SEO
Desde
22 May 2016
Mensajes
481
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
Puedes lograrlo con Node.js, hay ejemplos muy prácticos si buscas en Google.
 

sevilla666

Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
30 Nov 2016
Mensajes
191
Esto tendrias que hacer con notificaciones PUSH. Mi idea seria --> php nodejs websockets...

Tal como lo tienes planteado, también lo puedes hacer pero con un precio muy alto de CPU.
Aun así lo que planteas es fácil hacerlo pero si tienes varios usuarios el servidor no lo soportará.

Si tu idea sigue siendo tu planteamiento seria:
Pones un script JS en la página de los usuarios, ese script manda cada X segundos la ip o id por AJAX a un archivo PHP.
El archivo PHP comprueba si hay cambios en la BD.
Si hay cambios cargas el div del HTML que corresponda con la información que te convenga de la BD.
 
Última edición:

nekofuranshisuko

Beta
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
1 Jul 2016
Mensajes
47
puedes hacerlo con ajax pero tendrás que trabajar mucho para dejarlo optimizado y que note gaste mucho lo otro es Node.js
 

noticiasvs

Gamma
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
4 Ene 2017
Mensajes
217
Gracias por las respuestas, la web está en un hosting compartido y no puedo instalar el node.js, el tema es que no tengo muchos usuarios. Cuantos usuarios podría soportar a la vez con php, mysql y ajax? porque no creo que llegue a los 200 en un mismo momento. Saludos
 

sevilla666

Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
30 Nov 2016
Mensajes
191
Gracias por las respuestas, la web está en un hosting compartido y no puedo instalar el node.js, el tema es que no tengo muchos usuarios. Cuantos usuarios podría soportar a la vez con php, mysql y ajax? porque no creo que llegue a los 200 en un mismo momento. Saludos

No te se decir, según la cpu, pero desde luego que 200 no aguanta.
Hay limitaciones del servidor apache máx conexiones al servidor y a la db. Pero así de pronto no te se decir.
También dependerá de las conexi./segundo que pongas en el script que consulta al servidor las notificaciones nuevas.
 
Última edición:

noticiasvs

Gamma
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
4 Ene 2017
Mensajes
217
Tengo un archivo php, que hace las inserciones en la bd. Estas inserciones van en estado 1 o 2. A ese mismo archivo mando la id del usuario cada 30 segundos, mientras sea así el estado en la inserción será 1. Si el envio de las ids supera los 30 segundos el insert se hace en estado 2. El tema es como detecto si está conectado para mandar esa id, porque si está registrado no me vale. Con simplemente crearlo para que lo mande, ya? me explico. El archivo javascript se ejecuta cuando se lee, es tan simple como crear el script para que haga eso y ya, sin verificar nada. Saludos
 

sevilla666

Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
30 Nov 2016
Mensajes
191
Tengo un archivo php, que hace las inserciones en la bd. Estas inserciones van en estado 1 o 2. A ese mismo archivo mando la id del usuario cada 30 segundos, mientras sea así el estado en la inserción será 1. Si el envio de las ids supera los 30 segundos el insert se hace en estado 2. El tema es como detecto si está conectado para mandar esa id, porque si está registrado no me vale. Con simplemente crearlo para que lo mande, ya? me explico. El archivo javascript se ejecuta cuando se lee, es tan simple como crear el script para que haga eso y ya, sin verificar nada. Saludos

Te lo explico otra vez:
Pones un script JS en la página de los usuarios, ese script manda cada X segundos el id del usuario por AJAX (para no recargar la pagina) y, consulta un archivo PHP.

El archivo PHP comprueba en la BD si hay mensajes del chat para el usuario que ha hecho la consulta.

Si hay mensajes de chat para el usuario que hace la consulta cargas el div del HTML del usuario que ha hecho la consulta con la información del mensaje que es para el.
 
Última edición:

noticiasvs

Gamma
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
4 Ene 2017
Mensajes
217
Ok, trataré de hacerlo! muchas gracias
 
Arriba